This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository e16-epplets.

View the commit online.

commit 1d98d75ac0e4812d46d1d0044a516f85f0130e36
Author: Kim Woelders <[email protected]>
AuthorDate: Wed Dec 10 19:32:54 2025 +0100

    api: Fix some Fix constness warnings
    
    Appeared after glibc update.
---
 api/epplet.c | 134 +++++++++++++++++++++--------------------------------------
 1 file changed, 48 insertions(+), 86 deletions(-)

diff --git a/api/epplet.c b/api/epplet.c
index a7fd405..f54eb01 100644
--- a/api/epplet.c
+++ b/api/epplet.c
@@ -1909,51 +1909,38 @@ Epplet_reset_textbox(Epplet_gadget eg)
     Epplet_draw_textbox(eg);
 }
 
-void
-Epplet_textbox_insert(Epplet_gadget eg, const char *new_contents)
+static int
+_Epplet_textbox_insert(GadTextBox *g, const char *new_contents)
 {
-    GadTextBox     *g;
-    int             len, w, h;
-    char           *s, *line_break;
+    int             len_old, len_new;
+    char           *s;
+    const char     *line_break;
 
-    GADGET_CONFIRM_TYPE(eg, E_TEXTBOX);
-    if (!new_contents || ((len = strlen(new_contents)) == 0))
-        return;
-
-    g = (GadTextBox *) eg;
-
-    if (g->contents)
-        s = malloc(len + strlen(g->contents) + 1);
-    else
-        s = malloc(len + 1);
+    if (!new_contents || ((len_new = strlen(new_contents)) == 0))
+        return -1;
 
     if ((line_break = strchr(new_contents, '\n')))
+        len_new = line_break - new_contents;
+
+    len_old = (g->contents) ? strlen(g->contents) : 0;
+    s = realloc(g->contents, len_old + len_new + 1);
+    if (!s)
     {
-        *line_break = '\0';     /* get rid of the new line */
+        printf("Couldn't alloc mem\n");
+        return -1;
     }
+    g->contents = s;
 
-    if (s)
+    if (len_old)
     {
-        *s = '\0';
-
-        if (g->contents)
-        {
-            strncpy(s, g->contents, g->cursor_pos);
-            *(s + g->cursor_pos) = '\0';
-            strcat(s, new_contents);
-            strcat(s, (g->contents + g->cursor_pos + 1));
-        }
-        else
-            strcat(s, new_contents);
-
-        free(g->contents);
-
-        g->contents = s;
+        memmove(g->contents + g->cursor_pos + len_new,
+                g->contents + g->cursor_pos, len_old - g->cursor_pos + 1);
+        memcpy(g->contents + g->cursor_pos, new_contents, len_new);
     }
     else
     {
-        printf("Couldn't alloc mem\n");
-        return;
+        memcpy(g->contents, new_contents, len_new);
+        g->contents[len_new] = '\0';
     }
 
     if (line_break)
@@ -1962,9 +1949,26 @@ Epplet_textbox_insert(Epplet_gadget eg, const char *new_contents)
             (*(g->func)) (g->data);
     }
 
-    Epplet_textbox_textsize(g, &w, &h, g->contents);
+    g->cursor_pos = g->contents ? g->cursor_pos + len_new : 0;
 
-    g->cursor_pos = g->contents ? strlen(g->contents) : 0;
+    return 0;
+}
+
+void
+Epplet_textbox_insert(Epplet_gadget eg, const char *new_contents)
+{
+    GadTextBox     *g = (GadTextBox *) eg;;
+    int             w, h;
+
+    GADGET_CONFIRM_TYPE(eg, E_TEXTBOX);
+
+    if (!new_contents || *new_contents == '\0')
+        return;
+
+    if (_Epplet_textbox_insert(g, new_contents))
+        return;                 /* Failed */
+
+    Epplet_textbox_textsize(g, &w, &h, g->contents);
 
     g->x_offset = 0;
     if (w > g->w)
@@ -1977,52 +1981,29 @@ Epplet_textbox_insert(Epplet_gadget eg, const char *new_contents)
 void
 Epplet_change_textbox(Epplet_gadget eg, const char *new_contents)
 {
-    GadTextBox     *g;
-    int             len, w, h;
-    char           *s;
+    GadTextBox     *g = (GadTextBox *) eg;
+    int             w, h;
 
     GADGET_CONFIRM_TYPE(eg, E_TEXTBOX);
-    if (!new_contents || ((len = strlen(new_contents)) == 0))
+
+    if (!new_contents || *new_contents == '\0')
     {
         Epplet_reset_textbox(eg);
         return;
     }
-    g = (GadTextBox *) eg;
 
     if (g->contents == new_contents)
         return;
-    free(g->contents);
 
-    if ((s = strchr(new_contents, '\n')))
-    {
-        *s = '\0';              /* kill new line */
-
-        s = malloc(sizeof(char) * len + 1);
-
-        if (s)
-        {
-            strcpy(s, new_contents);
-            g->contents = s;
-            Epplet_draw_textbox(eg);
-
-            if (g->func)
-                (*(g->func)) (g->data);
-        }
-        else
-            printf("Couldn't allocate memory.\n");
-    }
-    g->contents = Estrdup(new_contents);
+    if (_Epplet_textbox_insert(g, new_contents))
+        return;                 /* Failed */
 
     Epplet_textbox_textsize(g, &w, &h, g->contents);
 
-    g->cursor_pos = g->contents ? strlen(g->contents) : 0;
-
     g->x_offset = 0;
     if (w > g->w)
         g->x_offset -= w - g->w + 2 + CRSR_WDTH;
-
     g->to_cursor = w;
-    g->cursor_pos = strlen(new_contents);
 
     Epplet_draw_textbox(eg);
 }
@@ -2355,27 +2336,8 @@ Epplet_textbox_handle_keyevent(XEvent *ev, Epplet_gadget gadget)
     }
     else
     {
-        if (g->contents)
-        {
-            g->contents = realloc(g->contents, (strlen(g->contents) + len + 1));
-        }
-        else
-        {
-            if (!strcmp(kbuf, " "))
-                return;
-
-            g->contents = malloc(len + 1);
-            *(g->contents) = '\0';
-        }
-
-        len = strlen(g->contents) + 1;
-        memmove((g->contents + g->cursor_pos + 1),
-                (g->contents + g->cursor_pos),
-                strlen(g->contents + g->cursor_pos));
-        *(g->contents + g->cursor_pos) = *kbuf;
-        *(g->contents + len) = '\0';
-
-        g->cursor_pos++;
+        if (_Epplet_textbox_insert(g, kbuf))
+            return;             /* Failed */
     }
 
     Epplet_textbox_textsize(g, &char_width, &h, kbuf);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to