From: Carsten Haitzler (Rasterman) Date: Mon, 14 Oct 2019 11:14:26 +0000 (+0100) Subject: eet - fix loading eet files that do not have dicts X-Git-Tag: submit/tizen/20191111.023126~305 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a82c372d1f61efa084df90b36dbb3407395c8e3e;p=platform%2Fupstream%2Fefl.git eet - fix loading eet files that do not have dicts my performance fix for locking around the eet dict breaks if there is no dict in the eet file. this causes a segv. fixes T8368 @fix --- diff --git a/src/lib/eet/eet_data.c b/src/lib/eet/eet_data.c index f8293ed..5bcf65f 100644 --- a/src/lib/eet/eet_data.c +++ b/src/lib/eet/eet_data.c @@ -2283,11 +2283,11 @@ eet_data_read_cipher(Eet_File *ef, return NULL; } - eet_dictionary_lock_read(ed); // XXX: get manual eet_dictionary lock + if (ed) eet_dictionary_lock_read(ed); // XXX: get manual eet_dictionary lock eet_free_context_init(&context); data_dec = _eet_data_descriptor_decode(&context, ed, edd, data, size, NULL, 0); eet_free_context_shutdown(&context); - eet_dictionary_unlock(ed); // XXX: release manual eet_dictionary lock + if (ed) eet_dictionary_unlock(ed); // XXX: release manual eet_dictionary lock if (required_free) free((void *)data); @@ -2324,11 +2324,11 @@ eet_data_read_cipher_buffer(Eet_File *ef, return NULL; } - eet_dictionary_lock_read(ed); // XXX: get manual eet_dictionary lock + if (ed) eet_dictionary_lock_read(ed); // XXX: get manual eet_dictionary lock eet_free_context_init(&context); data_dec = _eet_data_descriptor_decode(&context, ed, edd, data, size, buffer, buffer_size); eet_free_context_shutdown(&context); - eet_dictionary_unlock(ed); // XXX: release manual eet_dictionary lock + if (ed) eet_dictionary_unlock(ed); // XXX: release manual eet_dictionary lock if (required_free) free((void *)data); @@ -2361,11 +2361,11 @@ eet_data_node_read_cipher(Eet_File *ef, return NULL; } - eet_dictionary_lock_read(ed); // XXX: get manual eet_dictionary lock + if (ed) eet_dictionary_lock_read(ed); // XXX: get manual eet_dictionary lock eet_free_context_init(&context); result = _eet_data_descriptor_decode(&context, ed, NULL, data, size, NULL, 0); eet_free_context_shutdown(&context); - eet_dictionary_unlock(ed); // XXX: release manual eet_dictionary lock + if (ed) eet_dictionary_unlock(ed); // XXX: release manual eet_dictionary lock if (required_free) free((void *)data); @@ -4839,11 +4839,11 @@ eet_data_dump_cipher(Eet_File *ef, return 0; } - eet_dictionary_lock_read(ed); // XXX: get manual eet_dictionary lock + if (ed) eet_dictionary_lock_read(ed); // XXX: get manual eet_dictionary lock eet_free_context_init(&context); result = _eet_data_descriptor_decode(&context, ed, NULL, data, size, NULL, 0); eet_free_context_shutdown(&context); - eet_dictionary_unlock(ed); // XXX: release manual eet_dictionary lock + if (ed) eet_dictionary_unlock(ed); // XXX: release manual eet_dictionary lock eet_node_dump(result, 0, dumpfunc, dumpdata);