Enlightenment CVS committal

Author  : lok
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/lib


Modified Files:
        etk_entry.c 


Log Message:
strndup replaced by more common code.

===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -3 -r1.52 -r1.53
--- etk_entry.c 5 May 2008 13:47:04 -0000       1.52
+++ etk_entry.c 6 May 2008 22:17:47 -0000       1.53
@@ -132,17 +132,24 @@
    if (!entry)
       return;
 
-   if (!entry->editable_object)
+   if (!text)
+      text_tmp = NULL;
+   else if (entry->text_limit == 0)
+      text_tmp = strdup(text);
+   else
    {
-      if (entry->text != text)
-      {
-         free(entry->text);
-         entry->text = text ? entry->text_limit == 0 ? strdup(text) : 
strndup(text, entry->text_limit) : NULL;
-      }
+      text_tmp = malloc(entry->text_limit + 1);
+      text_tmp[entry->text_limit] = '\0';
+      strncpy(text_tmp, text, entry->text_limit);
+   }
+
+   if (!entry->editable_object && entry->text != text)
+   {
+      free(entry->text);
+      entry->text = text_tmp;
    }
    else 
    {
-      text_tmp = !text || entry->text_limit == 0 ? strdup(text) : 
strndup(text, entry->text_limit);
       etk_editable_text_set(entry->editable_object, text_tmp);
       free(text_tmp);
    }
@@ -653,7 +660,14 @@
       etk_editable_text_set(entry->editable_object, entry->text);
    else 
    {
-      text_tmp = entry->text ? strndup(entry->text, entry->text_limit): NULL; 
+      if (!entry->text)
+         text_tmp = NULL;
+      else
+      {
+         text_tmp = malloc(entry->text_limit+1);
+         text_tmp[entry->text_limit] = '\0';
+         strncpy(text_tmp, entry->text, entry->text_limit);
+      }
       etk_editable_text_set(entry->editable_object, text_tmp);
       free(text_tmp);
    }
@@ -712,7 +726,6 @@
 {
    Etk_Entry *entry;
    const char *text;
-   char *text_tmp;
 
    if (!(entry = ETK_ENTRY(etk_object_data_get(object, "_Etk_Entry::Entry"))))
       return ETK_TRUE;
@@ -741,7 +754,11 @@
       if (entry->text_limit==0)
          entry->text = strdup(text);
       else 
-         entry->text = strndup(text, entry->text_limit);
+      {
+         entry->text = malloc(entry->text_limit+1);
+         entry->text[entry->text_limit] = '\0';
+         strncpy(entry->text, text, entry->text_limit);
+      }
    }
    else
       entry->text = NULL;



-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to