aboutsummaryrefslogtreecommitdiffstats
path: root/src/charset.c
diff options
context:
space:
mode:
authorChong Yidong <[email protected]>2012-05-31 14:08:06 +0800
committerChong Yidong <[email protected]>2012-05-31 14:08:06 +0800
commitefc00ab16e2890b75d7224434ac43fe944ade4dd (patch)
tree28c1078ca32b96402cd1a5f618a17b3526143f27 /src/charset.c
parentba93a18774352c97d6dd73c73141cbff6305581b (diff)
parentdd41169b6cb0105b0766f3d368c657ebafc19cba (diff)
Merge from emacs-24; up to 2012-04-24T21:47:[email protected]
Diffstat (limited to 'src/charset.c')
-rw-r--r--src/charset.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/charset.c b/src/charset.c
index 6ecc8d2c4d..8ce972ebf3 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1633,6 +1633,12 @@ maybe_unify_char (int c, Lisp_Object val)
return c;
CHECK_CHARSET_GET_CHARSET (val, charset);
+#ifdef REL_ALLOC
+ /* The call to load_charset below can allocate memory, which screws
+ callers of this function through STRING_CHAR_* macros that hold C
+ pointers to buffer text, if REL_ALLOC is used. */
+ r_alloc_inhibit_buffer_relocation (1);
+#endif
load_charset (charset, 1);
if (! inhibit_load_charset_map)
{
@@ -1648,6 +1654,9 @@ maybe_unify_char (int c, Lisp_Object val)
if (unified > 0)
c = unified;
}
+#ifdef REL_ALLOC
+ r_alloc_inhibit_buffer_relocation (0);
+#endif
return c;
}