Futile attempts to improve things through memory management. But I'm freeing strings before they're used. No bueno.
This commit is contained in:
@@ -10,12 +10,14 @@ json_t *get_json_object_value(json_t *obj, char *key)
|
||||
return value;
|
||||
}
|
||||
|
||||
int get_json_boolean_value(json_t *obj, char *key)
|
||||
bool get_json_boolean_value(json_t *obj, char *key)
|
||||
{
|
||||
json_t *value = json_object_get(obj, key);
|
||||
THROW_ZERO(value, EXC_KEYERROR, "");
|
||||
THROW_ZERO(json_is_boolean(value), EXC_ATTRIBUTEERROR, "");
|
||||
return json_boolean_value(value);
|
||||
bool i = json_boolean_value(value);
|
||||
json_decref(value);
|
||||
return i;
|
||||
}
|
||||
|
||||
int get_json_integer_value(json_t *obj, char *key)
|
||||
@@ -23,30 +25,38 @@ int get_json_integer_value(json_t *obj, char *key)
|
||||
json_t *value = json_object_get(obj, key);
|
||||
THROW_ZERO(value, EXC_KEYERROR, "");
|
||||
THROW_ZERO(json_is_integer(value), EXC_ATTRIBUTEERROR, "");
|
||||
return json_integer_value(value);
|
||||
int i = json_integer_value(value);
|
||||
json_decref(value);
|
||||
return i;
|
||||
}
|
||||
|
||||
float get_json_number_value(json_t *obj, char *key)
|
||||
{
|
||||
json_t *value = json_object_get(obj, key);
|
||||
float f;
|
||||
THROW_ZERO(value, EXC_KEYERROR, "");
|
||||
THROW_ZERO(json_is_number(value), EXC_ATTRIBUTEERROR, "");
|
||||
return json_number_value(value);
|
||||
f = json_number_value(value);
|
||||
json_decref(value);
|
||||
return f;
|
||||
}
|
||||
|
||||
const char *get_json_string_value(json_t *obj, char *key)
|
||||
{
|
||||
const char *s;
|
||||
json_t *value = json_object_get(obj, key);
|
||||
THROW_ZERO(value, EXC_KEYERROR, "");
|
||||
THROW_ZERO(json_is_string(value), EXC_ATTRIBUTEERROR, "");
|
||||
return json_string_value(value);
|
||||
THROW_ZERO(value, EXC_KEYERROR, key);
|
||||
THROW_ZERO(json_is_string(value), EXC_ATTRIBUTEERROR, key);
|
||||
s = json_string_value(value);
|
||||
json_decref(value);
|
||||
return s;
|
||||
}
|
||||
|
||||
json_t *get_json_array_value(json_t *obj, char *key)
|
||||
{
|
||||
json_t *value = json_object_get(obj, key);
|
||||
THROW_ZERO(value, EXC_KEYERROR, "");
|
||||
THROW_ZERO(json_is_array(value), EXC_ATTRIBUTEERROR, "");
|
||||
THROW_ZERO(value, EXC_KEYERROR, key);
|
||||
THROW_ZERO(json_is_array(value), EXC_ATTRIBUTEERROR, key);
|
||||
return value;
|
||||
}
|
||||
|
||||
@@ -60,8 +70,11 @@ json_t *get_json_array_index_object(json_t *array, int index)
|
||||
|
||||
int get_json_array_index_integer(json_t *array, int index)
|
||||
{
|
||||
int i;
|
||||
json_t *value = json_array_get(array, index);
|
||||
THROW_ZERO(value, EXC_INDEXERROR, "");
|
||||
THROW_ZERO(json_is_integer(value), EXC_ATTRIBUTEERROR, "");
|
||||
return json_integer_value(value);
|
||||
i = json_integer_value(value);
|
||||
json_decref(value);
|
||||
return i;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user