efl selection - fix another binary buffer treates as string bug
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 12 Apr 2018 17:42:00 +0000 (02:42 +0900)
committerWonki Kim <wonki_.kim@samsung.com>
Mon, 16 Apr 2018 02:15:45 +0000 (11:15 +0900)
as per subject.

@fix

src/lib/elementary/efl_selection_manager.c

index 5b92f61..0a003ba 100644 (file)
@@ -1166,9 +1166,17 @@ _x11_text_converter(char *target, void *data, int size EINA_UNUSED, void **data_
    if ((sel->format & EFL_SELECTION_FORMAT_MARKUP) ||
        (sel->format & EFL_SELECTION_FORMAT_HTML))
      {
-        *data_ret = _elm_util_mkup_to_text(sel->data.mem);
-        if (size_ret && *data_ret) *size_ret = strlen(*data_ret);
-        sel_debug("markup or html: %s", (const char *)*data_ret);
+        char *tmp = malloc(size + 1);
+        if (tmp)
+          {
+             strncpy(tmp, data, size);
+             tmp[size] = 0;
+             *data_ret = _elm_util_mkup_to_text(tmp);
+             if (size_ret && *data_ret) *size_ret = strlen(*data_ret);
+             free(tmp);
+             sel_debug("markup or html: %s", (const char *)*data_ret);
+          }
+        else return EINA_FALSE;
      }
    else if (sel->format & EFL_SELECTION_FORMAT_TEXT)
      {