diff options
author | dec05eba <dec05eba@protonmail.com> | 2020-07-15 21:52:19 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-07-15 21:53:09 +0200 |
commit | 39b3e3cb3874b7827e6c5cc655cf47d5d1f33aa7 (patch) | |
tree | 9b465836fd7e3f2f06f6cd36fbf508447dc668b3 /src/rss_html_common.c | |
parent | 3e75758eb85777c77e5ca952583a9dd370fd5ca5 (diff) |
Fix segfault on torrent add, fix corruption of rss json downloaded item
Diffstat (limited to 'src/rss_html_common.c')
-rw-r--r-- | src/rss_html_common.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/rss_html_common.c b/src/rss_html_common.c index ba4682b..352a3a2 100644 --- a/src/rss_html_common.c +++ b/src/rss_html_common.c @@ -190,6 +190,7 @@ int tracked_item_update_latest(TrackedItem *tracked_item, char *tracked_dir, Dow } struct json_value_s *downloaded_json = json_object_get_field_by_name(tracked_item->json_data, "downloaded"); + struct json_array_s *downloaded_json_array_orig = NULL; struct json_array_s *downloaded_json_array = NULL; struct json_array_s new_downloaded_array; @@ -214,6 +215,7 @@ int tracked_item_update_latest(TrackedItem *tracked_item, char *tracked_dir, Dow result = -1; goto cleanup; } + downloaded_json_array_orig = downloaded_json_array; } else { downloaded_json_array = &new_downloaded_array; } @@ -313,10 +315,12 @@ int tracked_item_update_latest(TrackedItem *tracked_item, char *tracked_dir, Dow downloaded_json_array->length = 1; last_downloaded_element = &new_downloaded_item_element[i]; - struct json_object_element_s *prev_start = tracked_item->json_data->start; - tracked_item->json_data->start = &new_downloaded_array_obj_el; - new_downloaded_array_obj_el.next = prev_start; - tracked_item->json_data->length++; + if(!downloaded_json_array_orig) { + struct json_object_element_s *prev_start = tracked_item->json_data->start; + tracked_item->json_data->start = &new_downloaded_array_obj_el; + new_downloaded_array_obj_el.next = prev_start; + tracked_item->json_data->length++; + } } } |