Enlightenment CVS committal Author : lok Project : e17 Module : libs/etk
Dir : e17/libs/etk/src/lib Modified Files: etk_entry.c etk_entry.h Log Message: Do not over-allocate. Use a size_t for the max size. =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.c,v retrieving revision 1.53 retrieving revision 1.54 diff -u -3 -r1.53 -r1.54 --- etk_entry.c 6 May 2008 22:17:47 -0000 1.53 +++ etk_entry.c 6 May 2008 22:44:17 -0000 1.54 @@ -138,9 +138,11 @@ text_tmp = strdup(text); else { - text_tmp = malloc(entry->text_limit + 1); - text_tmp[entry->text_limit] = '\0'; - strncpy(text_tmp, text, entry->text_limit); + size_t limit = strlen(text); + limit = ETK_MIN(entry->text_limit, limit); + text_tmp = malloc(limit + 1); + text_tmp[limit] = '\0'; + strncpy(text_tmp, text, limit); } if (!entry->editable_object && entry->text != text) @@ -179,7 +181,7 @@ * @param entry an entry * @param limit the limit of text length, 0 means no limit */ -void etk_entry_text_limit_set(Etk_Entry *entry, int limit) +void etk_entry_text_limit_set(Etk_Entry *entry, size_t limit) { if (!entry) return; @@ -197,7 +199,7 @@ * @param entry an entry * @return Returns the limit of text entry, 0 means no limit. */ -int etk_entry_text_limit_get(Etk_Entry *entry) +size_t etk_entry_text_limit_get(Etk_Entry *entry) { if (!entry) return -1; @@ -420,7 +422,7 @@ entry->imf_ee_handler_commit = NULL; entry->imf_ee_handler_delete = NULL; entry->text = NULL; - entry->text_limit=0; + entry->text_limit = 0; entry->internal_entry = etk_widget_new(ETK_WIDGET_TYPE, "repeat-mouse-events", ETK_TRUE, "theme-group", "entry", "theme-parent", entry, "parent", entry, "internal", ETK_TRUE, NULL); @@ -656,7 +658,7 @@ etk_editable_theme_set(entry->editable_object, etk_widget_theme_file_get(internal_entry), etk_widget_theme_group_get(internal_entry)); - if (entry->text_limit==0) + if (entry->text_limit == 0) etk_editable_text_set(entry->editable_object, entry->text); else { @@ -664,9 +666,11 @@ 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); + size_t limit = strlen(entry->text); + limit = ETK_MIN(entry->text_limit, limit); + text_tmp = malloc(limit+1); + text_tmp[limit] = '\0'; + strncpy(text_tmp, entry->text, limit); } etk_editable_text_set(entry->editable_object, text_tmp); free(text_tmp); @@ -755,9 +759,11 @@ entry->text = strdup(text); else { - entry->text = malloc(entry->text_limit+1); - entry->text[entry->text_limit] = '\0'; - strncpy(entry->text, text, entry->text_limit); + size_t limit = strlen(text); + limit = ETK_MIN(entry->text_limit, limit); + entry->text = malloc(limit+1); + entry->text[limit] = '\0'; + strncpy(entry->text, text, limit); } } else =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_entry.h,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- etk_entry.h 5 May 2008 13:47:04 -0000 1.22 +++ etk_entry.h 6 May 2008 22:44:17 -0000 1.23 @@ -55,7 +55,7 @@ Ecore_IMF_Context *imf_context; char *text; - int text_limit; + size_t text_limit; Etk_Color highlight_color; int image_interspace; @@ -76,8 +76,8 @@ void etk_entry_text_set(Etk_Entry *entry, const char *text); const char *etk_entry_text_get(Etk_Entry *entry); -void etk_entry_text_limit_set(Etk_Entry *entry, int limit); -int etk_entry_text_limit_get(Etk_Entry *entry); +void etk_entry_text_limit_set(Etk_Entry *entry, size_t limit); +size_t etk_entry_text_limit_get(Etk_Entry *entry); void etk_entry_clear(Etk_Entry *entry); void etk_entry_image_set(Etk_Entry *entry, Etk_Entry_Image_Position position, Etk_Image *image); Etk_Image *etk_entry_image_get(Etk_Entry *entry, Etk_Entry_Image_Position position); ------------------------------------------------------------------------- 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