Enlightenment CVS committal Author : sebastid Project : e17 Module : libs/eet
Dir : e17/libs/eet/src/lib Modified Files: eet_lib.c Log Message: Delay string duplication until necessary. Fix leak. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/eet/src/lib/eet_lib.c,v retrieving revision 1.50 retrieving revision 1.51 diff -u -3 -r1.50 -r1.51 --- eet_lib.c 4 Nov 2005 03:22:22 -0000 1.50 +++ eet_lib.c 4 Nov 2005 17:44:01 -0000 1.51 @@ -916,10 +916,6 @@ if (!ef->header->directory->nodes) return 0; } - /* dup name */ - name = strdup(name); - if (!name) return 0; - /* figure hash bucket */ hash = eet_hash_gen(name, ef->header->directory->size); @@ -930,11 +926,8 @@ if (compress) data_size = 12 + ((size * 101) / 100); data2 = malloc(data_size); - if (!data2) - { - free(name); - return 0; - } + if (!data2) return 0; + /* if we want to compress */ if (compress) { @@ -945,7 +938,6 @@ if (compress2((Bytef *)data2, &buflen, (Bytef *)data, (uLong)size, Z_BEST_COMPRESSION) != Z_OK) { - free(name); free(data2); return 0; } @@ -981,7 +973,6 @@ efn->data_size = size; efn->data = data2; exists_already = 1; - free(name); break; } } @@ -991,13 +982,18 @@ efn = calloc(1, sizeof(Eet_File_Node)); if (!efn) { - free(name); + free(data2); + return 0; + } + efn->name = strdup(name); + if (!efn->name) + { + free(efn); free(data2); return 0; } efn->next = ef->header->directory->nodes[hash]; ef->header->directory->nodes[hash] = efn; - efn->name = name; efn->offset = 0; efn->compression = !!compress; efn->size = data_size; @@ -1036,6 +1032,7 @@ if (eet_string_match(efn->name, name)) { if (efn->data) free(efn->data); + if (efn->name) free(efn->name); if (efn == ef->header->directory->nodes[hash]) ef->header->directory->nodes[hash] = efn->next; else ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs