Skip to content

Commit 44cb101

Browse files
authored
Merge pull request #658 from WilhelmWiens/OptimizeDump_C
Optimized dump.c Move indentation check out of loop (do_dump)
2 parents 96d160d + 51000a9 commit 44cb101

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

src/dump.c

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -283,21 +283,20 @@ static int do_dump(const json_t *json, size_t flags, int depth, hashtable_t *par
283283
if (dump_indent(flags, depth + 1, 0, dump, data))
284284
return -1;
285285

286-
for (i = 0; i < n; ++i) {
286+
for (i = 0; i < n - 1; ++i) {
287287
if (do_dump(json_array_get(json, i), flags, depth + 1, parents, dump,
288288
data))
289289
return -1;
290290

291-
if (i < n - 1) {
292-
if (dump(",", 1, data) ||
293-
dump_indent(flags, depth + 1, 1, dump, data))
294-
return -1;
295-
} else {
296-
if (dump_indent(flags, depth, 0, dump, data))
297-
return -1;
298-
}
291+
if (dump(",", 1, data) || dump_indent(flags, depth + 1, 1, dump, data))
292+
return -1;
299293
}
300294

295+
if (do_dump(json_array_get(json, i), flags, depth + 1, parents, dump, data))
296+
return -1;
297+
if (dump_indent(flags, depth, 0, dump, data))
298+
return -1;
299+
301300
hashtable_del(parents, key, key_len);
302301
return embed ? 0 : dump("]", 1, data);
303302
}
@@ -322,10 +321,10 @@ static int do_dump(const json_t *json, size_t flags, int depth, hashtable_t *par
322321
&loop_key_len))
323322
return -1;
324323

325-
iter = json_object_iter((json_t *)json);
326-
327324
if (!embed && dump("{", 1, data))
328325
return -1;
326+
327+
iter = json_object_iter((json_t *)json);
329328
if (!iter) {
330329
hashtable_del(parents, loop_key, loop_key_len);
331330
return embed ? 0 : dump("}", 1, data);

0 commit comments

Comments
 (0)