From: <enl...@li...> - 2005-11-30 08:45:59
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/canvas Modified Files: evas_font_dir.c evas_object_image.c evas_object_smart.c evas_object_text.c evas_object_textblock.c Log Message: stringshare works! :) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_font_dir.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- evas_font_dir.c 29 Nov 2005 09:02:51 -0000 1.12 +++ evas_font_dir.c 30 Nov 2005 08:45:20 -0000 1.13 @@ -36,33 +36,9 @@ { if (!font_dirs) return; - evas_hash_foreach (font_dirs, font_cache_dir_free, NULL); - evas_hash_free (font_dirs); + evas_hash_foreach(font_dirs, font_cache_dir_free, NULL); + evas_hash_free(font_dirs); font_dirs = NULL; -/* - while (fonts_cache) - { - Fndat *fd; - - fd = evas_list_data(fonts_cache); - fonts_cache = evas_list_remove_list(fonts_cache, fonts_cache); - if (fd->name) free(fd->name); - if (fd->source) free(fd->source); - evas->engine.func->font_free(evas->engine.data.output, fd->font); - free(fd); - } - while (fonts_zero) - { - Fndat *fd; - - fd = evas_list_data(fonts_zero); - fonts_zero = evas_list_remove_list(fonts_zero, fonts_zero); - if (fd->name) free(fd->name); - if (fd->source) free(fd->source); - evas->engine.func->font_free(evas->engine.data.output, fd->font); - free(fd); - } - */ } char * @@ -94,7 +70,7 @@ p = strchr(name, ','); if (!p) { - fonts = evas_list_append(fonts, strdup(name)); + fonts = evas_list_append(fonts, evas_stringshare_add(name)); } else { @@ -104,13 +80,13 @@ pp = name; while (p) { - nm = malloc(p - pp + 1); + nm = alloca(p - pp + 1); strncpy(nm, pp, p - pp); nm[p - pp] = 0; - fonts = evas_list_append(fonts, nm); + fonts = evas_list_append(fonts, evas_stringshare_add(nm)); pp = p + 1; p = strchr(pp, ','); - if (!p) fonts = evas_list_append(fonts, strdup(pp)); + if (!p) fonts = evas_list_append(fonts, evas_stringshare_add(pp)); } } return fonts; @@ -145,8 +121,8 @@ fd = evas_list_data(fonts_zero); if (fd->ref != 0) break; fonts_zero = evas_list_remove_list(fonts_zero, fonts_zero); - if (fd->name) free(fd->name); - if (fd->source) free(fd->source); + if (fd->name) evas_stringshare_del(fd->name); + if (fd->source) evas_stringshare_del(fd->source); evas->engine.func->font_free(evas->engine.data.output, fd->font); free(fd); } @@ -323,14 +299,14 @@ } #endif } - free(nm); + evas_stringshare_del(nm); } evas_list_free(fonts); fd = calloc(1, sizeof(Fndat)); if (fd) { - fd->name = strdup(name); - if (source) fd->source = strdup(source); + fd->name = evas_stringshare_add(name); + if (source) fd->source = evas_stringshare_add(source); fd->size = size; fd->font = font; fd->ref = 1; @@ -483,7 +459,7 @@ object_text_font_cache_dir_add(char *dir) { Evas_Font_Dir *fd; - char *tmp; + char *tmp, *tmp2; Evas_List *fdir; fd = calloc(1, sizeof(Evas_Font_Dir)); @@ -524,12 +500,13 @@ { fn->type = 1; for (i = 0; i < 14; i++) + fn->x.prop[i] = evas_stringshare_add(font_prop[i]); + tmp2 = evas_file_path_join(dir, fname); + if (tmp2) { - fn->x.prop[i] = strdup(font_prop[i]); - /* FIXME: what if strdup fails! */ + fn->path = evas_stringshare_add(tmp2); + free(tmp2); } - fn->path = evas_file_path_join(dir, fname); - /* FIXME; what is evas_file_path_join fails! */ fd->fonts = evas_list_append(fd->fonts, fn); } } @@ -552,16 +529,20 @@ fn = calloc(1, sizeof(Evas_Font)); if (fn) { + char *p; + fn->type = 0; - fn->simple.name = strdup(fdir->data); - if (fn->simple.name) + tmp2 = alloca(strlen(fdir->data) + 1); + strcpy(tmp2, fdir->data); + p = strrchr(tmp2, '.'); + if (p) *p = 0; + fn->simple.name = evas_stringshare_add(tmp2); + tmp2 = evas_file_path_join(dir, fdir->data); + if (tmp2) { - char *p; - - p = strrchr(fn->simple.name, '.'); - if (p) *p = 0; + fn->path = evas_stringshare_add(tmp2); + free(tmp2); } - fn->path = evas_file_path_join(dir, fdir->data); fd->fonts = evas_list_append(fd->fonts, fn); } free(tmp); @@ -591,11 +572,11 @@ fa = calloc(1, sizeof(Evas_Font_Alias)); if (fa) { - fa->alias = strdup(fname); + fa->alias = evas_stringshare_add(fname); fa->fn = object_text_font_cache_font_find_x(fd, fdef); if ((!fa->alias) || (!fa->fn)) { - if (fa->alias) free(fa->alias); + if (fa->alias) evas_stringshare_del(fa->alias); free(fa); } else @@ -637,10 +618,10 @@ fd->fonts = evas_list_remove(fd->fonts, fn); for (i = 0; i < 14; i++) { - if (fn->x.prop[i]) free(fn->x.prop[i]); + if (fn->x.prop[i]) evas_stringshare_del(fn->x.prop[i]); } - if (fn->simple.name) free(fn->simple.name); - if (fn->path) free(fn->path); + if (fn->simple.name) evas_stringshare_del(fn->simple.name); + if (fn->path) evas_stringshare_del(fn->path); free(fn); } while (fd->aliases) @@ -649,7 +630,7 @@ fa = fd->aliases->data; fd->aliases = evas_list_remove(fd->aliases, fa); - if (fa->alias) free(fa->alias); + if (fa->alias) evas_stringshare_del(fa->alias); free(fa); } free(fd); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_image.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -3 -r1.36 -r1.37 --- evas_object_image.c 29 Nov 2005 09:02:51 -0000 1.36 +++ evas_object_image.c 30 Nov 2005 08:45:20 -0000 1.37 @@ -138,11 +138,11 @@ if ((o->cur.key) && (key) && (!strcmp(o->cur.key, key))) return; } - if (o->cur.file) free(o->cur.file); - if (o->cur.key) free(o->cur.key); - if (file) o->cur.file = strdup(file); + if (o->cur.file) evas_stringshare_del(o->cur.file); + if (o->cur.key) evas_stringshare_del(o->cur.key); + if (file) o->cur.file = evas_stringshare_add(file); else o->cur.file = NULL; - if (key) o->cur.key = strdup(key); + if (key) o->cur.key = evas_stringshare_add(key); else o->cur.key = NULL; o->prev.file = NULL; o->prev.key = NULL; @@ -871,20 +871,17 @@ char *p, *pp; char *tflags; - tflags = strdup(flags); - if (tflags) + tflags = alloca(strlen(flags) + 1); + strcpy(tflags, flags); + p = tflags; + while (p) { - p = tflags; - while (p) - { - pp = strchr(p, ' '); - if (pp) *pp = 0; - sscanf(p, "quality=%i", &quality); - sscanf(p, "compress=%i", &compress); - if (pp) p = pp + 1; - else break; - } - free(tflags); + pp = strchr(p, ' '); + if (pp) *pp = 0; + sscanf(p, "quality=%i", &quality); + sscanf(p, "compress=%i", &compress); + if (pp) p = pp + 1; + else break; } } im = evas_common_image_new(); @@ -1330,8 +1327,8 @@ return; MAGIC_CHECK_END(); /* free obj */ - if (o->cur.file) free(o->cur.file); - if (o->cur.key) free(o->cur.key); + if (o->cur.file) evas_stringshare_del(o->cur.file); + if (o->cur.key) evas_stringshare_del(o->cur.key); if (o->engine_data) obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output, o->engine_data); @@ -1589,10 +1586,8 @@ { if (((o->cur.file) && (!o->prev.file)) || ((!o->cur.file) && (o->prev.file)) || - (((o->cur.file) && (o->prev.file) && (strcmp(o->cur.file, o->prev.file)))) || ((o->cur.key) && (!o->prev.key)) || - ((!o->cur.key) && (o->prev.key)) || - (((o->cur.key) && (o->prev.key) && (strcmp(o->cur.key, o->prev.key)))) + ((!o->cur.key) && (o->prev.key)) ) { updates = evas_object_render_pre_prev_cur_add(updates, obj); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_smart.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -3 -r1.19 -r1.20 --- evas_object_smart.c 29 Nov 2005 09:02:51 -0000 1.19 +++ evas_object_smart.c 30 Nov 2005 08:45:20 -0000 1.20 @@ -225,7 +225,7 @@ if (!event) return; if (!func) return; cb = calloc(1, sizeof(Evas_Smart_Callback)); - cb->event = strdup(event); + cb->event = evas_stringshare_add(event); cb->func = func; cb->func_data = (void *)data; obj->smart.callbacks = evas_list_prepend(obj->smart.callbacks, cb); @@ -326,7 +326,7 @@ if (cb->delete_me) { obj->smart.callbacks = evas_list_remove(obj->smart.callbacks, cb); - if (cb->event) free(cb->event); + if (cb->event) evas_stringshare_del(cb->event); free(cb); } } @@ -359,7 +359,7 @@ cb = obj->smart.callbacks->data; obj->smart.callbacks = evas_list_remove(obj->smart.callbacks, cb); - if (cb->event) free(cb->event); + if (cb->event) evas_stringshare_del(cb->event); free(cb); } obj->smart.parent = NULL; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_text.c,v retrieving revision 1.48 retrieving revision 1.49 diff -u -3 -r1.48 -r1.49 --- evas_object_text.c 29 Nov 2005 09:02:51 -0000 1.48 +++ evas_object_text.c 30 Nov 2005 08:45:20 -0000 1.49 @@ -108,8 +108,8 @@ if ((o->cur.source) && (font_source) && (!strcmp(o->cur.source, font_source))) return; - if (o->cur.source) free(o->cur.source); - if (font_source) o->cur.source = strdup(font_source); + if (o->cur.source) evas_stringshare_del(o->cur.source); + if (font_source) o->cur.source = evas_stringshare_add(font_source); else o->cur.source = NULL; } @@ -179,8 +179,8 @@ o->engine_data = evas_font_load(obj->layer->evas, font, o->cur.source, size); if (!same_font) { - if (o->cur.font) free(o->cur.font); - if (font) o->cur.font = strdup(font); + if (o->cur.font) evas_stringshare_del(o->cur.font); + if (font) o->cur.font = evas_stringshare_add(font); else o->cur.font = NULL; o->prev.font = NULL; } @@ -293,8 +293,8 @@ obj->layer->evas->pointer.x, obj->layer->evas->pointer.y, 1, 1); /* DO II */ - if (o->cur.text) free(o->cur.text); - if (text && *text) o->cur.text = strdup(text); + if (o->cur.text) evas_stringshare_del(o->cur.text); + if ((text) && (*text)) o->cur.text = evas_stringshare_add(text); else o->cur.text = NULL; o->prev.text = NULL; if ((o->engine_data) && (o->cur.text)) @@ -917,7 +917,7 @@ MAGIC_CHECK_END(); while (e->font_path) { - free(e->font_path->data); + evas_stringshare_del(e->font_path->data); e->font_path = evas_list_remove(e->font_path, e->font_path->data); } } @@ -935,7 +935,7 @@ return; MAGIC_CHECK_END(); if (!path) return; - e->font_path = evas_list_append(e->font_path, strdup(path)); + e->font_path = evas_list_append(e->font_path, evas_stringshare_add(path)); } /** @@ -951,7 +951,7 @@ return; MAGIC_CHECK_END(); if (!path) return; - e->font_path = evas_list_prepend(e->font_path, strdup(path)); + e->font_path = evas_list_prepend(e->font_path, evas_stringshare_add(path)); } /** @@ -1197,9 +1197,9 @@ return; MAGIC_CHECK_END(); /* free obj */ - if (o->cur.text) free(o->cur.text); - if (o->cur.font) free(o->cur.font); - if (o->cur.source) free(o->cur.source); + if (o->cur.text) evas_stringshare_del(o->cur.text); + if (o->cur.font) evas_stringshare_del(o->cur.font); + if (o->cur.source) evas_stringshare_del(o->cur.source); if (o->engine_data) evas_font_free(obj->layer->evas, o->engine_data); o->magic = 0; free(o); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_textblock.c,v retrieving revision 1.120 retrieving revision 1.121 diff -u -3 -r1.120 -r1.121 --- evas_object_textblock.c 29 Nov 2005 09:02:51 -0000 1.120 +++ evas_object_textblock.c 30 Nov 2005 08:45:20 -0000 1.121 @@ -329,14 +329,10 @@ s = ts; *alloc = talloc; } - tbuf = malloc(*len - pos); - if (tbuf) - { - strncpy(tbuf, s + pos, *len - pos); - strncpy(s + pos, s2, l2); - strncpy(s + pos + l2, tbuf, *len - pos); - free(tbuf); - } + tbuf = alloca(*len - pos); + strncpy(tbuf, s + pos, *len - pos); + strncpy(s + pos, s2, l2); + strncpy(s + pos + l2, tbuf, *len - pos); *len = tlen; s[tlen] = 0; return s; @@ -355,10 +351,9 @@ *alloc = 0; return NULL; } - tbuf = malloc(*len - p2 + 1); + tbuf = alloca(*len - p2 + 1); strcpy(tbuf, s + p2); strcpy(s + p, tbuf); - free(tbuf); tlen = *len - (p2 - p); if (tlen < ((*alloc >> 5) << 15)) { @@ -397,9 +392,9 @@ { fmt->ref--; if (fmt->ref > 0) return; - if (fmt->font.name) free(fmt->font.name); - if (fmt->font.fallbacks) free(fmt->font.fallbacks); - if (fmt->font.source) free(fmt->font.source); + if (fmt->font.name) evas_stringshare_del(fmt->font.name); + if (fmt->font.fallbacks) evas_stringshare_del(fmt->font.fallbacks); + if (fmt->font.source) evas_stringshare_del(fmt->font.source); evas_font_free(obj->layer->evas, fmt->font.font); free(fmt); } @@ -423,7 +418,7 @@ fi = (Evas_Object_Textblock_Format_Item *)ln->format_items; ln->format_items = evas_object_list_remove(ln->format_items, ln->format_items); - if (fi->item) free(fi->item); + if (fi->item) evas_stringshare_del(fi->item); free(fi); } free(ln); @@ -705,15 +700,11 @@ { char *ts; - ts = malloc(p - s + 1); - if (ts) - { - strncpy(ts, s, p - s); - ts[p - s] = 0; - ts = _clean_white(0, 0, ts); - evas_textblock_cursor_text_append(o->cursor, ts); - free(ts); - } + ts = alloca(p - s + 1); + strncpy(ts, s, p - s); + ts[p - s] = 0; + ts = _clean_white(0, 0, ts); + evas_textblock_cursor_text_append(o->cursor, ts); } } @@ -782,8 +773,8 @@ if ((!fmt->font.name) || ((fmt->font.name) && (strcmp(fmt->font.name, param)))) { - if (fmt->font.name) free(fmt->font.name); - fmt->font.name = strdup(param); + if (fmt->font.name) evas_stringshare_del(fmt->font.name); + fmt->font.name = evas_stringshare_add(param); new_font = 1; } } @@ -795,8 +786,8 @@ /* policy - when we say "fallbacks" do we prepend and use prior * fallbacks... or shoudl we replace. for nwo we replace */ - if (fmt->font.fallbacks) free(fmt->font.fallbacks); - fmt->font.fallbacks = strdup(param); + if (fmt->font.fallbacks) evas_stringshare_del(fmt->font.fallbacks); + fmt->font.fallbacks = evas_stringshare_add(param); new_font = 1; } } @@ -816,8 +807,8 @@ if ((!fmt->font.source) || ((fmt->font.source) && (strcmp(fmt->font.source, param)))) { - if (fmt->font.source) free(fmt->font.source); - fmt->font.source = strdup(param); + if (fmt->font.source) evas_stringshare_del(fmt->font.source); + fmt->font.source = evas_stringshare_add(param); new_font = 1; } } @@ -867,14 +858,11 @@ { char *ts, *p; - ts = strdup(param); - if (ts) - { - p = strchr(ts, '%'); - *p = 0; - fmt->halign = ((double)atoi(ts)) / 100.0; - free(ts); - } + ts = alloca(strlen(param)); + strcpy(ts, param); + p = strchr(ts, '%'); + *p = 0; + fmt->halign = ((double)atoi(ts)) / 100.0; if (fmt->halign < 0.0) fmt->halign = 0.0; else if (fmt->halign > 1.0) fmt->halign = 1.0; } @@ -897,14 +885,11 @@ { char *ts, *p; - ts = strdup(param); - if (ts) - { - p = strchr(ts, '%'); - *p = 0; - fmt->valign = ((double)atoi(ts)) / 100.0; - free(ts); - } + ts = alloca(strlen(param)); + strcpy(ts, param); + p = strchr(ts, '%'); + *p = 0; + fmt->valign = ((double)atoi(ts)) / 100.0; if (fmt->valign < 0.0) fmt->valign = 0.0; else if (fmt->valign > 1.0) fmt->valign = 1.0; } @@ -1148,9 +1133,9 @@ fmt2 = calloc(1, sizeof(Evas_Object_Textblock_Format)); memcpy(fmt2, fmt, sizeof(Evas_Object_Textblock_Format)); fmt2->ref = 1; - if (fmt->font.name) fmt2->font.name = strdup(fmt->font.name); - if (fmt->font.fallbacks) fmt2->font.fallbacks = strdup(fmt->font.fallbacks); - if (fmt->font.source) fmt2->font.source = strdup(fmt->font.source); + if (fmt->font.name) fmt2->font.name = evas_stringshare_add(fmt->font.name); + if (fmt->font.fallbacks) fmt2->font.fallbacks = evas_stringshare_add(fmt->font.fallbacks); + if (fmt->font.source) fmt2->font.source = evas_stringshare_add(fmt->font.source); if ((fmt2->font.name) && (fmt2->font.fallbacks)) { @@ -1823,7 +1808,7 @@ Evas_Object_Textblock_Format_Item *fi; fi = calloc(1, sizeof(Evas_Object_Textblock_Format_Item)); - fi->item = strdup(item); + fi->item = evas_stringshare_add(item); fi->source_node = n; c->ln->format_items = evas_object_list_append(c->ln->format_items, fi); return fi; |