jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=80413dda8c8797e719881f9df070ded9b24b88db

commit 80413dda8c8797e719881f9df070ded9b24b88db
Author: Subhransu Mohanty <[email protected]>
Date:   Thu Jul 7 16:27:17 2016 +0900

    svg/loader: use stringshare instead of malloc for storing string.
    
    Reviewers: cedric, jpeg
    
    Subscribers: cedric, jpeg
    
    Differential Revision: https://phab.enlightenment.org/D4142
---
 src/bin/edje/edje_svg_loader.c | 24 ++++++++++++------------
 src/lib/edje/edje_private.h    | 10 +++++-----
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/bin/edje/edje_svg_loader.c b/src/bin/edje/edje_svg_loader.c
index 51224b1..93e30b8 100644
--- a/src/bin/edje/edje_svg_loader.c
+++ b/src/bin/edje/edje_svg_loader.c
@@ -57,12 +57,12 @@ _skip_space(const char *str, const char *end)
    return (char *)str;
 }
 
-static inline char *
+static inline Eina_Stringshare *
 _copy_id(const char* str)
 {
    if (str == NULL) return NULL;
 
-   return strdup(str);
+   return eina_stringshare_add(str);
 }
 
 static const char *
@@ -210,7 +210,7 @@ _parse_dash_array(const char *str, Efl_Gfx_Dash** dash, int 
*length)
 }
 #endif
 
-static char *
+static Eina_Stringshare *
  _id_from_url(const char *url)
 {
    char tmp[50];
@@ -230,7 +230,7 @@ static char *
      }
    tmp[i] = '\0';
 
-   return strdup(tmp);
+   return eina_stringshare_add(tmp);
 }
 
 static unsigned char
@@ -407,7 +407,7 @@ static const struct {
 };
 
 static inline void
-_to_color(const char *str, int *r, int *g, int *b, char** ref)
+_to_color(const char *str, int *r, int *g, int *b, Eina_Stringshare** ref)
 {
    unsigned int i, len = strlen(str);
    char *red, *green, *blue;
@@ -953,7 +953,7 @@ _attr_parse_path_node(void *data, const char *key, const 
char *value)
 
    if (!strcmp(key, "d"))
      {
-        path->path = strdup(value);
+        path->path = eina_stringshare_add(value);
      }
    else if (!strcmp(key, "style"))
      {
@@ -1240,13 +1240,13 @@ _create_rect_node(Svg_Node *parent, const char *buf, 
unsigned buflen)
    return node;
 }
 
-static char *
+static Eina_Stringshare *
 _id_from_href(const char *href)
 {
    href = _skip_space(href, NULL);
    if ((*href) == '#')
      href++;
-   return strdup(href);
+   return eina_stringshare_add(href);
 }
 
 static Svg_Node*
@@ -1266,7 +1266,7 @@ _get_defs_node(Svg_Node *node)
 }
 
 static Svg_Node*
-_find_child_by_id(Svg_Node *node, char *id)
+_find_child_by_id(Svg_Node *node, const char *id)
 {
    Eina_List *l;
    Svg_Node *child;
@@ -1362,7 +1362,7 @@ _copy_attribute(Svg_Node *to, Svg_Node *from)
            to->node.rect.ry = from->node.rect.ry;
            break;
         case SVG_NODE_PATH:
-           to->node.path.path = strdup(from->node.path.path);
+           to->node.path.path = eina_stringshare_add(from->node.path.path);
            break;
         case SVG_NODE_POLYGON:
            to->node.polygon.points_count = from->node.polygon.points_count;
@@ -1397,7 +1397,7 @@ static Eina_Bool
 _attr_parse_use_node(void *data, const char *key, const char *value)
 {
    Svg_Node *defs, *node_from, *node = data;
-   char *id;
+   Eina_Stringshare *id;
 
    if (!strcmp(key, "xlink:href"))
      {
@@ -1405,7 +1405,7 @@ _attr_parse_use_node(void *data, const char *key, const 
char *value)
         defs = _get_defs_node(node);
         node_from = _find_child_by_id(defs, id);
         _clone_node(node_from, node);
-        free(id);
+        eina_stringshare_del(id);
      }
    else
      {
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index b7d1637..3b06513 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -3122,7 +3122,7 @@ struct _Svg_Rect_Node
 
 struct _Svg_Path_Node
 {
-   char *path;
+   Eina_Stringshare *path;
 };
 
 struct _Svg_Polygon_Node
@@ -3157,8 +3157,8 @@ struct _Svg_Radial_Gradient
 struct _Svg_Style_Gradient
 {
    Svg_Gradient_Type type;
-   char              *id;
-   char              *ref;
+   Eina_Stringshare  *id;
+   Eina_Stringshare  *ref;
    Efl_Gfx_Gradient_Spread spread;
    Eina_List   *stops; // Efl_Gfx_Gradient_Stop
    Svg_Radial_Gradient *radial;
@@ -3173,7 +3173,7 @@ struct _Svg_Paint
    Eina_Bool  none;
    Eina_Bool  cur_color;
    Svg_Style_Gradient  *gradient;
-   char      *url;
+   Eina_Stringshare    *url;
 };
 
 enum _Svg_Fill_Flags
@@ -3234,7 +3234,7 @@ struct _Svg_Node
    Svg_Node_Type        type;
    Svg_Node            *parent;
    Eina_List           *child;
-   char                *id;
+   Eina_Stringshare    *id;
    Svg_Style_Property  *style;
    Eina_Matrix3        *transform;
    union

-- 


Reply via email to