From: Jean-Philippe Andre Date: Tue, 18 Mar 2014 03:11:35 +0000 (+0900) Subject: Evas cserve2: Fix client crashes when a file changed X-Git-Tag: v1.9.0+464+gcaabcbe~96 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=320a9f18c55e3e281b374eb757e22a065d911c09;p=platform%2Fupstream%2Fefl.git Evas cserve2: Fix client crashes when a file changed Clients must ignore changed file entries as they are not valid anymore. The server will also mark the entry as invalid in case of file update. @fix --- diff --git a/src/bin/evas/evas_cserve2_cache.c b/src/bin/evas/evas_cserve2_cache.c index 0c2a5be..7acf201 100644 --- a/src/bin/evas/evas_cserve2_cache.c +++ b/src/bin/evas/evas_cserve2_cache.c @@ -1712,6 +1712,7 @@ _file_changed_cb(const char *path EINA_UNUSED, Eina_Bool deleted EINA_UNUSED, vo if (fd) { fd->changed = EINA_TRUE; + fd->valid = EINA_FALSE; _file_id_free(fd); eina_hash_set(file_entries, &fd->id, NULL); } diff --git a/src/lib/evas/cserve2/evas_cs2_client.c b/src/lib/evas/cserve2/evas_cs2_client.c index 2476e91..d532644 100644 --- a/src/lib/evas/cserve2/evas_cs2_client.c +++ b/src/lib/evas/cserve2/evas_cs2_client.c @@ -2735,7 +2735,9 @@ _shared_image_entry_file_data_find(Image_Entry *ie) if (fe->server_file_id) { if ((fdata = _shared_file_data_get_by_id(fe->server_file_id)) != NULL) - return fdata; + if (!fdata->changed) + return fdata; + fe->server_file_id = 0; } // Check hash @@ -2757,6 +2759,7 @@ _shared_image_entry_file_data_find(Image_Entry *ie) fd = &(_index.files.entries.filedata[k]); if (!fd->id) break; if (!fd->refcount) continue; + if (fd->changed) continue; key = _shared_string_safe_get(fd->key); file = _shared_string_safe_get(fd->path); @@ -3097,6 +3100,7 @@ _shared_image_entry_image_data_find(Image_Entry *ie) continue; } + if (fd->changed || !fd->valid) continue; key = _shared_string_safe_get(fd->key); file = _shared_string_safe_get(fd->path); if (!file)