summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYossi Kantor <yossi.kantor@samsung.com>2014-10-26 14:27:08 +0200
committerYakov Goldberg <yakov.g@samsung.com>2014-10-26 16:06:33 +0200
commit356fc8d935b76aaad76b1bd23aca585d90096c15 (patch)
treec498f3089318eefae3df0c4576857d30fd00057a
parent79ced8886d266ec47d42b28d13ae2ecbf4db9a4d (diff)
Json null checks for objects
-rw-r--r--src/lib/eina_json.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/eina_json.c b/src/lib/eina_json.c
index 3e14cd0..201e933 100644
--- a/src/lib/eina_json.c
+++ b/src/lib/eina_json.c
@@ -1042,12 +1042,14 @@ eina_json_value_free(Eina_Json_Value *jsnval)
1042EAPI inline 1042EAPI inline
1043Eina_Json_Type eina_json_type_get(Eina_Json_Value *jsnval) 1043Eina_Json_Type eina_json_type_get(Eina_Json_Value *jsnval)
1044{ 1044{
1045 EINA_SAFETY_ON_NULL_RETURN_VAL(jsnval, 0);
1045 return jsnval->type; 1046 return jsnval->type;
1046} 1047}
1047 1048
1048EAPI Eina_Bool 1049EAPI Eina_Bool
1049eina_json_number_set(Eina_Json_Value *jsnval, double num) 1050eina_json_number_set(Eina_Json_Value *jsnval, double num)
1050{ 1051{
1052 EINA_SAFETY_ON_NULL_RETURN_VAL(jsnval, EINA_FALSE);
1051 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_NUMBER), EINA_FALSE); 1053 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_NUMBER), EINA_FALSE);
1052 jsnval->number = num; 1054 jsnval->number = num;
1053 return EINA_TRUE; 1055 return EINA_TRUE;
@@ -1056,6 +1058,7 @@ eina_json_number_set(Eina_Json_Value *jsnval, double num)
1056EAPI Eina_Bool 1058EAPI Eina_Bool
1057eina_json_string_set(Eina_Json_Value *jsnval, const char* string) 1059eina_json_string_set(Eina_Json_Value *jsnval, const char* string)
1058{ 1060{
1061 EINA_SAFETY_ON_NULL_RETURN_VAL(jsnval, EINA_FALSE);
1059 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_STRING), EINA_FALSE); 1062 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_STRING), EINA_FALSE);
1060 eina_strbuf_reset(jsnval->string); 1063 eina_strbuf_reset(jsnval->string);
1061 eina_strbuf_append(jsnval->string, string); 1064 eina_strbuf_append(jsnval->string, string);
@@ -1065,6 +1068,7 @@ eina_json_string_set(Eina_Json_Value *jsnval, const char* string)
1065EAPI Eina_Bool 1068EAPI Eina_Bool
1066eina_json_boolean_set(Eina_Json_Value *jsnval, Eina_Bool boolval) 1069eina_json_boolean_set(Eina_Json_Value *jsnval, Eina_Bool boolval)
1067{ 1070{
1071 EINA_SAFETY_ON_NULL_RETURN_VAL(jsnval, EINA_FALSE);
1068 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_BOOLEAN), EINA_FALSE); 1072 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_BOOLEAN), EINA_FALSE);
1069 jsnval->boolean = boolval; 1073 jsnval->boolean = boolval;
1070 return EINA_TRUE; 1074 return EINA_TRUE;
@@ -1073,6 +1077,7 @@ eina_json_boolean_set(Eina_Json_Value *jsnval, Eina_Bool boolval)
1073EAPI double 1077EAPI double
1074eina_json_number_get(Eina_Json_Value *jsnval) 1078eina_json_number_get(Eina_Json_Value *jsnval)
1075{ 1079{
1080 EINA_SAFETY_ON_NULL_RETURN_VAL(jsnval, 0);
1076 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_NUMBER), 0.0); 1081 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_NUMBER), 0.0);
1077 return jsnval->number; 1082 return jsnval->number;
1078} 1083}
@@ -1080,6 +1085,7 @@ eina_json_number_get(Eina_Json_Value *jsnval)
1080EAPI const char * 1085EAPI const char *
1081eina_json_string_get(Eina_Json_Value *jsnval) 1086eina_json_string_get(Eina_Json_Value *jsnval)
1082{ 1087{
1088 EINA_SAFETY_ON_NULL_RETURN_VAL(jsnval, NULL);
1083 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_STRING), NULL); 1089 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_STRING), NULL);
1084 return eina_strbuf_string_get(jsnval->string); 1090 return eina_strbuf_string_get(jsnval->string);
1085} 1091}
@@ -1087,6 +1093,7 @@ eina_json_string_get(Eina_Json_Value *jsnval)
1087EAPI Eina_Bool 1093EAPI Eina_Bool
1088eina_json_boolean_get(Eina_Json_Value *jsnval) 1094eina_json_boolean_get(Eina_Json_Value *jsnval)
1089{ 1095{
1096 EINA_SAFETY_ON_NULL_RETURN_VAL(jsnval, EINA_FALSE);
1090 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_BOOLEAN), EINA_FALSE); 1097 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type != EINA_JSON_TYPE_BOOLEAN), EINA_FALSE);
1091 return jsnval->boolean; 1098 return jsnval->boolean;
1092} 1099}
@@ -1094,6 +1101,7 @@ eina_json_boolean_get(Eina_Json_Value *jsnval)
1094EAPI const char * 1101EAPI const char *
1095eina_json_pair_name_get(Eina_Json_Value *obj) 1102eina_json_pair_name_get(Eina_Json_Value *obj)
1096{ 1103{
1104 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1097 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_PAIR), NULL); 1105 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_PAIR), NULL);
1098 return eina_strbuf_string_get(obj->pair.name); 1106 return eina_strbuf_string_get(obj->pair.name);
1099} 1107}
@@ -1101,6 +1109,7 @@ eina_json_pair_name_get(Eina_Json_Value *obj)
1101EAPI Eina_Json_Value * 1109EAPI Eina_Json_Value *
1102eina_json_pair_value_get(Eina_Json_Value *obj) 1110eina_json_pair_value_get(Eina_Json_Value *obj)
1103{ 1111{
1112 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1104 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_PAIR), NULL); 1113 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_PAIR), NULL);
1105 return obj->pair.val; 1114 return obj->pair.val;
1106} 1115}
@@ -1108,6 +1117,7 @@ eina_json_pair_value_get(Eina_Json_Value *obj)
1108EAPI unsigned 1117EAPI unsigned
1109eina_json_object_count_get(Eina_Json_Value *obj) 1118eina_json_object_count_get(Eina_Json_Value *obj)
1110{ 1119{
1120 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, 0);
1111 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), 0); 1121 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), 0);
1112 return _eina_json_gen_count_get(obj); 1122 return _eina_json_gen_count_get(obj);
1113} 1123}
@@ -1115,6 +1125,7 @@ eina_json_object_count_get(Eina_Json_Value *obj)
1115EAPI Eina_Json_Value * 1125EAPI Eina_Json_Value *
1116eina_json_object_nth_get(Eina_Json_Value *obj, unsigned idx) 1126eina_json_object_nth_get(Eina_Json_Value *obj, unsigned idx)
1117{ 1127{
1128 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1118 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL); 1129 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL);
1119 return _eina_json_gen_nth_get(obj, idx); 1130 return _eina_json_gen_nth_get(obj, idx);
1120} 1131}
@@ -1122,6 +1133,7 @@ eina_json_object_nth_get(Eina_Json_Value *obj, unsigned idx)
1122EAPI Eina_Json_Value * 1133EAPI Eina_Json_Value *
1123eina_json_object_append(Eina_Json_Value *obj, const char* keyname, Eina_Json_Value *jsnval) 1134eina_json_object_append(Eina_Json_Value *obj, const char* keyname, Eina_Json_Value *jsnval)
1124{ 1135{
1136 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1125 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL); 1137 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL);
1126 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type == EINA_JSON_TYPE_PAIR), NULL); 1138 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type == EINA_JSON_TYPE_PAIR), NULL);
1127 1139
@@ -1145,6 +1157,7 @@ eina_json_object_append(Eina_Json_Value *obj, const char* keyname, Eina_Json_Val
1145EAPI Eina_Json_Value * 1157EAPI Eina_Json_Value *
1146eina_json_object_insert(Eina_Json_Value *obj, unsigned idx, const char* keyname, Eina_Json_Value *jsnval) 1158eina_json_object_insert(Eina_Json_Value *obj, unsigned idx, const char* keyname, Eina_Json_Value *jsnval)
1147{ 1159{
1160 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1148 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL); 1161 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL);
1149 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type == EINA_JSON_TYPE_PAIR), NULL); 1162 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type == EINA_JSON_TYPE_PAIR), NULL);
1150 1163
@@ -1172,6 +1185,7 @@ eina_json_object_insert(Eina_Json_Value *obj, unsigned idx, const char* keyname,
1172EAPI Eina_Bool 1185EAPI Eina_Bool
1173eina_json_object_nth_remove(Eina_Json_Value *obj, unsigned idx) 1186eina_json_object_nth_remove(Eina_Json_Value *obj, unsigned idx)
1174{ 1187{
1188 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
1175 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), EINA_FALSE); 1189 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), EINA_FALSE);
1176 return _eina_json_gen_nth_remove(obj, idx); 1190 return _eina_json_gen_nth_remove(obj, idx);
1177} 1191}
@@ -1179,6 +1193,7 @@ eina_json_object_nth_remove(Eina_Json_Value *obj, unsigned idx)
1179EAPI Eina_Iterator * 1193EAPI Eina_Iterator *
1180eina_json_object_iterator_new(Eina_Json_Value *obj) 1194eina_json_object_iterator_new(Eina_Json_Value *obj)
1181{ 1195{
1196 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1182 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL); 1197 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL);
1183 return _eina_json_gen_iterator_new(obj); 1198 return _eina_json_gen_iterator_new(obj);
1184} 1199}
@@ -1191,6 +1206,7 @@ eina_json_object_value_get_internal(Eina_Json_Value *obj, ...)
1191 Eina_Json_Value *jval; 1206 Eina_Json_Value *jval;
1192 Eina_Inlist *l; 1207 Eina_Inlist *l;
1193 1208
1209 EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
1194 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL); 1210 EINA_SAFETY_ON_TRUE_RETURN_VAL((obj->type != EINA_JSON_TYPE_OBJECT), NULL);
1195 1211
1196 jval = obj; 1212 jval = obj;
@@ -1221,6 +1237,7 @@ eina_json_object_value_get_internal(Eina_Json_Value *obj, ...)
1221EAPI unsigned 1237EAPI unsigned
1222eina_json_array_count_get(Eina_Json_Value *arr) 1238eina_json_array_count_get(Eina_Json_Value *arr)
1223{ 1239{
1240 EINA_SAFETY_ON_NULL_RETURN_VAL(arr, 0);
1224 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), 0); 1241 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), 0);
1225 return _eina_json_gen_count_get(arr); 1242 return _eina_json_gen_count_get(arr);
1226} 1243}
@@ -1228,6 +1245,7 @@ eina_json_array_count_get(Eina_Json_Value *arr)
1228EAPI Eina_Json_Value * 1245EAPI Eina_Json_Value *
1229eina_json_array_nth_get(Eina_Json_Value *arr, unsigned idx) 1246eina_json_array_nth_get(Eina_Json_Value *arr, unsigned idx)
1230{ 1247{
1248 EINA_SAFETY_ON_NULL_RETURN_VAL(arr, NULL);
1231 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), NULL); 1249 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), NULL);
1232 return _eina_json_gen_nth_get(arr, idx); 1250 return _eina_json_gen_nth_get(arr, idx);
1233} 1251}
@@ -1235,6 +1253,7 @@ eina_json_array_nth_get(Eina_Json_Value *arr, unsigned idx)
1235EAPI Eina_Json_Value * 1253EAPI Eina_Json_Value *
1236eina_json_array_append(Eina_Json_Value *arr, Eina_Json_Value *jsnval) 1254eina_json_array_append(Eina_Json_Value *arr, Eina_Json_Value *jsnval)
1237{ 1255{
1256 EINA_SAFETY_ON_NULL_RETURN_VAL(arr, NULL);
1238 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), NULL); 1257 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), NULL);
1239 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type == EINA_JSON_TYPE_PAIR), NULL); 1258 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type == EINA_JSON_TYPE_PAIR), NULL);
1240 return _eina_json_gen_append(arr, jsnval); 1259 return _eina_json_gen_append(arr, jsnval);
@@ -1243,6 +1262,7 @@ eina_json_array_append(Eina_Json_Value *arr, Eina_Json_Value *jsnval)
1243EAPI Eina_Json_Value * 1262EAPI Eina_Json_Value *
1244eina_json_array_insert(Eina_Json_Value *arr, unsigned idx, Eina_Json_Value *jsnval) 1263eina_json_array_insert(Eina_Json_Value *arr, unsigned idx, Eina_Json_Value *jsnval)
1245{ 1264{
1265 EINA_SAFETY_ON_NULL_RETURN_VAL(arr, NULL);
1246 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), NULL); 1266 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), NULL);
1247 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type == EINA_JSON_TYPE_PAIR), NULL); 1267 EINA_SAFETY_ON_TRUE_RETURN_VAL((jsnval->type == EINA_JSON_TYPE_PAIR), NULL);
1248 return _eina_json_gen_insert(arr, idx, jsnval); 1268 return _eina_json_gen_insert(arr, idx, jsnval);
@@ -1251,6 +1271,7 @@ eina_json_array_insert(Eina_Json_Value *arr, unsigned idx, Eina_Json_Value *jsnv
1251EAPI Eina_Bool 1271EAPI Eina_Bool
1252eina_json_array_nth_remove(Eina_Json_Value *arr, unsigned idx) 1272eina_json_array_nth_remove(Eina_Json_Value *arr, unsigned idx)
1253{ 1273{
1274 EINA_SAFETY_ON_NULL_RETURN_VAL(arr, EINA_FALSE);
1254 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), EINA_FALSE); 1275 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), EINA_FALSE);
1255 return _eina_json_gen_nth_remove(arr, idx); 1276 return _eina_json_gen_nth_remove(arr, idx);
1256} 1277}
@@ -1258,6 +1279,7 @@ eina_json_array_nth_remove(Eina_Json_Value *arr, unsigned idx)
1258EAPI Eina_Iterator * 1279EAPI Eina_Iterator *
1259eina_json_array_iterator_new(Eina_Json_Value *arr) 1280eina_json_array_iterator_new(Eina_Json_Value *arr)
1260{ 1281{
1282 EINA_SAFETY_ON_NULL_RETURN_VAL(arr, NULL);
1261 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), NULL); 1283 EINA_SAFETY_ON_TRUE_RETURN_VAL((arr->type != EINA_JSON_TYPE_ARRAY), NULL);
1262 return _eina_json_gen_iterator_new(arr); 1284 return _eina_json_gen_iterator_new(arr);
1263} 1285}
@@ -1265,6 +1287,7 @@ eina_json_array_iterator_new(Eina_Json_Value *arr)
1265EAPI char * 1287EAPI char *
1266eina_json_format_string_get(Eina_Json_Value *jsnval, Eina_Json_Format format) 1288eina_json_format_string_get(Eina_Json_Value *jsnval, Eina_Json_Format format)
1267{ 1289{
1290 EINA_SAFETY_ON_NULL_RETURN_VAL(jsnval, NULL);
1268 EINA_SAFETY_ON_TRUE_RETURN_VAL((format > EINA_JSON_FORMAT_BASIC), NULL); 1291 EINA_SAFETY_ON_TRUE_RETURN_VAL((format > EINA_JSON_FORMAT_BASIC), NULL);
1269 1292
1270 int ident0 = 0; 1293 int ident0 = 0;