-void SerializeJson(StrBuf *Target, JsonValue *Val)
+void SerializeJson(StrBuf *Target, JsonValue *Val, int FreeVal)
{
void *vValue, *vPrevious;
JsonValue *SubVal;
StrBufAppendBufPlain(Target, HKEY(","), 0);
SubVal = (JsonValue*) vValue;
- SerializeJson(Target, SubVal);
+ SerializeJson(Target, SubVal, 0);
vPrevious = vValue;
}
StrBufAppendBufPlain(Target, HKEY("]"), 0);
StrBufAppendBuf(Target, SubVal->Name, 0);
StrBufAppendBufPlain(Target, HKEY("\":"), 0);
- SerializeJson(Target, SubVal);
+ SerializeJson(Target, SubVal, 0);
vPrevious = vValue;
}
StrBufAppendBufPlain(Target, HKEY("}"), 0);
break;
}
-
+ if(FreeVal) {
+ DeleteJSONValue(Val);
+ }
}
void JsonObjectAppend(JsonValue *Array, JsonValue *Val);
-void SerializeJson(StrBuf *Target, JsonValue *Val);
+void SerializeJson(StrBuf *Target, JsonValue *Val, int FreeVal);
eEXCEPTION
} WF_MessageType;
-JsonValue *WildFireException(StrBuf *Message,
- const char *Filename, long FileLen,
+JsonValue *WildFireException(const char *Filename, long FileLen,
long LineNo,
+ StrBuf *Message,
int StackOffset);
void WildFireAddArray(JsonValue *ReportBase, JsonValue *Array, WF_MessageType Type);
memcpy(bptr, "\\\"", 2);
bptr += 2;
Target->BufUsed += 2;
- }
- else if (*aptr == '\'') {
- memcpy(bptr, "\\\'", 2);
- bptr += 2;
- Target->BufUsed += 2;
} else if (*aptr == '\\') {
memcpy(bptr, "\\\\", 2);
bptr += 2;
ConstStr WF_MsgStrs[] = {
+ {HKEY("LOG")},
{HKEY("INFO")},
{HKEY("WARN")},
{HKEY("ERROR")},
- {HKEY("LOG")},
{HKEY("TRACE")},
{HKEY("EXCEPTION")}
};
BaseFrames --;
BaseFrames += AddBaseFrameSkip;
strings = backtrace_symbols(stack_frames, size);
- for (i = 0; i < size; i++) {
+ for (i = 1; i < size; i++) {
if (strings != NULL){
ParseBacktrace(strings[i], Function,
FileName,
}
-JsonValue *WildFireException(StrBuf *Message,
- const char *Filename, long FileLen,
+JsonValue *WildFireException(const char *Filename, long FileLen,
long LineNo,
+ StrBuf *Message,
int StackOffset)
{
JsonValue *ExcClass;