Author: ek.kato
Date: Mon Nov  5 02:31:54 2007
New Revision: 5040

Modified:
  sigscheme-trunk/src/string-procedure.c

Log:
* src/string-procedure.c (scm_p_string_setx) : Don't realloc the
 string buffer when a new char is shorter than original one as
 FreeBSD 7's realloc(3) invalidate string beyond the new
 size.


Modified: sigscheme-trunk/src/string-procedure.c
==============================================================================
--- sigscheme-trunk/src/string-procedure.c      (original)
+++ sigscheme-trunk/src/string-procedure.c      Mon Nov  5 02:31:54 2007
@@ -238,8 +238,11 @@
        suffix_len = strlen(suffix_src);

        new_str_len = prefix_len + ch_len + suffix_len;
-        new_str = scm_realloc(c_str, new_str_len + sizeof(""));
-
+        if (ch_len > orig_ch_len) {
+          new_str = scm_realloc(c_str, new_str_len + sizeof(""));
+        } else {
+          new_str = c_str;
+        }
        suffix_src = &new_str[prefix_len + orig_ch_len];
        suffix_dst = &new_str[prefix_len + ch_len];
        memmove(suffix_dst, suffix_src, suffix_len);

Reply via email to