浏览代码

demo/allegro5: minor string-related tweaks

Andrew Kravchuk 2 年之前
父节点
当前提交
c09e3b36f8
共有 1 个文件被更改,包括 8 次插入9 次删除
  1. 8 9
      demo/allegro5/nuklear_allegro5.h

+ 8 - 9
demo/allegro5/nuklear_allegro5.h

@@ -101,7 +101,7 @@ static float
 nk_allegro5_font_get_text_width(nk_handle handle, float height, const char *text, int len)
 {
     float width;
-    char *strcpy;
+    char *str;
     NkAllegro5Font *font = (NkAllegro5Font*)handle.ptr;
     NK_UNUSED(height);
     if (!font || !text) {
@@ -111,11 +111,11 @@ nk_allegro5_font_get_text_width(nk_handle handle, float height, const char *text
        as nuklear uses variable size buffers and al_get_text_width doesn't
        accept a length, it infers length from null-termination
        (which is unsafe API design by allegro devs!) */
-    strcpy = malloc(len + 1);
-    strncpy(strcpy, text, len);
-    strcpy[len] = '\0';
-    width = al_get_text_width(font->font, strcpy);
-    free(strcpy);
+    str = calloc((size_t)len + 1, 1);
+    if(!str) return 0;
+    strncpy(str, text, len);
+    width = al_get_text_width(font->font, str);
+    free(str);
     return width;
 }
 
@@ -473,10 +473,9 @@ nk_allegro5_clipboard_copy(nk_handle usr, const char *text, int len)
     char *str = 0;
     (void)usr;
     if (!len) return;
-    str = (char*)malloc((size_t)len+1);
+    str = calloc((size_t)len + 1, 1);
     if (!str) return;
-    memcpy(str, text, (size_t)len);
-    str[len] = '\0';
+    strncpy(str, text, len);
     al_set_clipboard_text(allegro5.dsp, str);
     free(str);
 }