]> code.delx.au - gnu-emacs/commitdiff
* fns.c (string_to_multibyte): Use xmalloc/xfree instead of alloca.
authorJan Djärv <jan.h.d@swipnet.se>
Thu, 17 Jun 2004 14:37:53 +0000 (14:37 +0000)
committerJan Djärv <jan.h.d@swipnet.se>
Thu, 17 Jun 2004 14:37:53 +0000 (14:37 +0000)
src/ChangeLog
src/fns.c

index 15cd195b4edb4be10dedb6305892ada6df48970c..298e2a5808d5f28f4408c7b87c2443261d7a45f2 100644 (file)
@@ -1,5 +1,7 @@
 2004-06-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
+       * fns.c (string_to_multibyte): Use xmalloc/xfree instead of alloca.
+
        * macfns.c (Fx_display_color_cells): Do not limit return value to 256.
 
        * macterm.c (mac_initialize_display_info): Initialize n_planes correctly
index 6001d99fb49e4d583bf01b1115528823e2242406..9c5a9d1282b8e3935a43f85b00a12a4fab503563 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -1049,16 +1049,24 @@ string_make_unibyte (string)
      Lisp_Object string;
 {
   unsigned char *buf;
+  Lisp_Object ret;
 
   if (! STRING_MULTIBYTE (string))
     return string;
 
-  buf = (unsigned char *) alloca (SCHARS (string));
+  /* We can not use alloca here, because string might be very long.
+     For example when selecting megabytes of text and then pasting it to
+     another application.  */
+  buf = (unsigned char *) xmalloc (SCHARS (string));
 
   copy_text (SDATA (string), buf, SBYTES (string),
             1, 0);
 
-  return make_unibyte_string (buf, SCHARS (string));
+  ret = make_unibyte_string (buf, SCHARS (string));
+
+  xfree (buf);
+
+  return ret;
 }
 
 DEFUN ("string-make-multibyte", Fstring_make_multibyte, Sstring_make_multibyte,