From f775ca85eab33274dd1032fe67698aa7b08bb44d Mon Sep 17 00:00:00 2001 From: raster Date: Sun, 15 Dec 2002 01:32:13 +0000 Subject: [PATCH] ooops! :) git-svn-id: http://svn.enlightenment.org/svn/e/trunk/e17/libs/eet@6491 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/eet_lib.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/lib/eet_lib.c b/src/lib/eet_lib.c index e1cef9d..c40d8e9 100644 --- a/src/lib/eet_lib.c +++ b/src/lib/eet_lib.c @@ -781,7 +781,8 @@ eet_write(Eet_File *ef, char *name, void *data, int size, int compress) if (!name2) return 0; /* dup data */ data_size = size; - if (compress == 1) + /* have bigger buffer for compress */ + if (compress == 1) data_size = 12 + ((size * 101) / 100); data2 = malloc(data_size); if (!data2) @@ -793,10 +794,12 @@ eet_write(Eet_File *ef, char *name, void *data, int size, int compress) if (compress == 1) { uLongf buflen; - + int ok; + /* compress the data with max compression */ - if (compress2((Bytef *)data2, &buflen, (Bytef *)data, - (uLong)size, 9) != Z_OK) + buflen = (uLongf)data_size; + if ((ok = compress2((Bytef *)data2, &buflen, (Bytef *)data, + (uLong)size, 9)) != Z_OK) { free(name2); free(data2); @@ -809,6 +812,13 @@ eet_write(Eet_File *ef, char *name, void *data, int size, int compress) compress = 0; data_size = size; } + else + { + void *data3; + + data3 = realloc(data2, data_size); + if (data3) data2 = data3; + } } if (!compress) memcpy(data2, data, size); -- 2.7.4