Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : epplets

Dir     : e16/epplets/api


Modified Files:
        epplet.c 


Log Message:
Fix segv and mem leaks.

===================================================================
RCS file: /cvs/e/e16/epplets/api/epplet.c,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -3 -r1.136 -r1.137
--- epplet.c    13 Apr 2006 08:26:31 -0000      1.136
+++ epplet.c    13 Apr 2006 11:07:27 -0000      1.137
@@ -2135,14 +2135,6 @@
    g->contents = Estrdup(contents);
    g->cursor_pos = contents ? strlen(contents) : 0;
 
-   if (contents)
-     {
-       Epplet_textbox_textsize(g, &contents_w, &contents_h, contents);
-       g->to_cursor = contents_w;
-     }
-   else
-      g->to_cursor = 0;
-
    g->x_offset = 0;
    g->w = w;
    g->h = h;
@@ -2154,6 +2146,14 @@
    g->image = Epplet_find_file(image);
    g->hilited = 0;
 
+   if (contents)
+     {
+       Epplet_textbox_textsize(g, &contents_w, &contents_h, contents);
+       g->to_cursor = contents_w;
+     }
+   else
+      g->to_cursor = 0;
+
    attr.backing_store = NotUseful;
    attr.override_redirect = False;
    attr.colormap = imlib_context_get_colormap();
@@ -2399,6 +2399,8 @@
        Epplet_textbox_textsize(eg, &x, &h, s);
        g->to_cursor = x;
 
+       free(s);
+
        if (h == 0)
           Epplet_textbox_textsize(eg, &x, &h, "X");
 
@@ -2445,6 +2447,7 @@
       XDrawRectangle(disp, g->win, gc, g->to_cursor + g->x_offset + 2, 2,
                     CRSR_WDTH, g->h - 4);
 #endif
+   XFreeGC(disp, gc);
 }
 
 int
@@ -4260,6 +4263,8 @@
                index = last_index = length / 2;
                delta = last_index / 2;
 
+               Epplet_textbox_textsize(g, &text_w, &text_h, g->contents);
+
                while (delta >= 1.0)
                  {
                     index = last_index;
@@ -4278,6 +4283,8 @@
                  {
                     if (left)
                       {
+                         if (index <= 0)
+                            break;
                          buf = g->contents[index - 1];
                          g->contents[index - 1] = 0;
                          Epplet_textbox_textsize(g, &text_wl, &text_h, 
g->contents);
@@ -4285,6 +4292,8 @@
                       }
                     if (right)
                       {
+                         if (index >= length)
+                            break;
                          buf = g->contents[index + 1];
                          g->contents[index + 1] = 0;
                          Epplet_textbox_textsize(g, &text_wr, &text_h, 
g->contents);
@@ -4738,6 +4747,8 @@
           g = (GadPopupButton *) gadget;
           XDestroyWindow(disp, g->win);
           XDeleteContext(disp, g->win, xid_context);
+          if (g->std)
+             free(g->std);
           if (g->label)
              free(g->label);
           if (g->image)




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to