Fix json structures; need to use the LKEY & lHashfunc
[citadel.git] / libcitadel / lib / json.c
index 8690f4e2b7b3d851fbc86e281b766d914de19339..63fcbdcb9adf701b96f86161727cc448bf2c5634 100644 (file)
@@ -1,9 +1,22 @@
-/*
- * $Id: wildfire.c 6962 2009-01-18 19:33:45Z dothebart $
- */
 /**
  * \defgroup Subst Variable substitution type stuff
  * \ingroup CitadelConfig
+ *
+ * Copyright (c) 1987-2011 by the citadel.org team
+ *
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
 /*@{*/
@@ -67,7 +80,7 @@ JsonValue *NewJsonArray(const char *Key, long keylen)
        Ret->Type = JSON_ARRAY;
        if (Key != NULL)
                Ret->Name = NewStrBufPlain(Key, keylen);
-       Ret->SubValues = NewHash(1, Flathash);
+       Ret->SubValues = NewHash(1, lFlathash);
        return Ret;
 }
 
@@ -164,7 +177,7 @@ void JsonArrayAppend(JsonValue *Array, JsonValue *Val)
                return; /* todo assert! */
 
        n = GetCount(Array->SubValues);
-       Put(Array->SubValues, (const char*) &n, sizeof(n), Val, DeleteJSONValue);
+       Put(Array->SubValues, LKEY(n), Val, DeleteJSONValue);
 }
 
 void JsonObjectAppend(JsonValue *Array, JsonValue *Val)
@@ -219,6 +232,7 @@ void SerializeJson(StrBuf *Target, JsonValue *Val, int FreeVal)
                        vPrevious = vValue;
                }
                StrBufAppendBufPlain(Target, HKEY("]"), 0);
+               DeleteHashPos(&It);
                break;
        case JSON_OBJECT:
                vPrevious = NULL;
@@ -241,6 +255,7 @@ void SerializeJson(StrBuf *Target, JsonValue *Val, int FreeVal)
                        vPrevious = vValue;
                }
                StrBufAppendBufPlain(Target, HKEY("}"), 0);
+               DeleteHashPos(&It);
                break;
        }
        if(FreeVal) {