User: aidan
Date: 05/12/24 20:06:07
Modified: xemacs/src ChangeLog alloc.c
Log:
Allow the low-memory warning code to call malloc itself.
Revision Changes Path
1.913 +12 -0 XEmacs/xemacs/src/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.912
retrieving revision 1.913
diff -u -p -r1.912 -r1.913
--- ChangeLog 2005/12/24 17:33:31 1.912
+++ ChangeLog 2005/12/24 19:06:04 1.913
@@ -1,5 +1,17 @@
2005-12-24 Aidan Kehoe <kehoea(a)parhasard.net>
+ * alloc.c (MALLOC_BEGIN):
+ Assert that we're either not in malloc, or warning about memory
+ being low.
+ * alloc.c (MALLOC_WARNING_BEGIN, MALLOC_WARNING_END):
+ Add two clauses to set and clear a flag that we're in a low-memory
+ warning situation.
+ * alloc.c (malloc_warning):
+ Move it after the definition of MALLOC_WARNING_BEGIN,
+ MALLOC_WARNING_END
+
+2005-12-24 Aidan Kehoe <kehoea(a)parhasard.net>
+
* objects-gtk.c (MAX_FONT_COUNT):
* objects-x.c (MAX_FONT_COUNT): Increase MAX_FONT_COUNT from 5000
to INT_MAX. Applies to both the X and GTK platforms.
1.121 +28 -18 XEmacs/xemacs/src/alloc.c
Index: alloc.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/alloc.c,v
retrieving revision 1.120
retrieving revision 1.121
diff -u -p -r1.120 -r1.121
--- alloc.c 2005/11/25 01:41:55 1.120
+++ alloc.c 2005/12/24 19:06:05 1.121
@@ -231,22 +231,6 @@ release_breathing_space (void)
}
#endif /* not MC_ALLOC */
-/* malloc calls this if it finds we are near exhausting storage */
-void
-malloc_warning (const char *str)
-{
- if (ignore_malloc_warnings)
- return;
-
- warn_when_safe
- (Qmemory, Qemergency,
- "%s\n"
- "Killing some buffers may delay running out of memory.\n"
- "However, certainly by the time you receive the 95%% warning,\n"
- "you should clean up, kill this Emacs, and start a new one.",
- str);
-}
-
/* Called if malloc returns zero */
DOESNT_RETURN
memory_full (void)
@@ -290,18 +274,21 @@ set_alloc_mins_and_maxes (void *val, Byt
}
#ifdef ERROR_CHECK_MALLOC
-static int in_malloc;
+static int in_malloc, in_malloc_warning;
extern int regex_malloc_disallowed;
#define MALLOC_BEGIN() \
do \
{ \
- assert (!in_malloc); \
+ assert (!in_malloc || in_malloc_warning); \
assert (!regex_malloc_disallowed); \
in_malloc = 1; \
} \
while (0)
+#define MALLOC_WARNING_BEGIN() (++in_malloc_warning)
+#define MALLOC_WARNING_END() (--in_malloc_warning)
+
#ifdef MC_ALLOC
#define FREE_OR_REALLOC_BEGIN(block) \
do \
@@ -341,10 +328,33 @@ while (0)
#else /* ERROR_CHECK_MALLOC */
#define MALLOC_BEGIN()
+#define MALLOC_WARNING_BEGIN()
+#define MALLOC_WARNING_END()
#define FREE_OR_REALLOC_BEGIN(block)
#define MALLOC_END()
#endif /* ERROR_CHECK_MALLOC */
+
+/* malloc calls this if it finds we are near exhausting storage */
+void
+malloc_warning (const char *str)
+{
+ if (ignore_malloc_warnings)
+ return;
+
+ MALLOC_WARNING_BEGIN();
+
+ warn_when_safe
+ (Qmemory, Qemergency,
+ "%s\n"
+ "Killing some buffers may delay running out of memory.\n"
+ "However, certainly by the time you receive the 95%% warning,\n"
+ "you should clean up, kill this Emacs, and start a new one.\n"
+ "On Unix, look into your resource limits; ulimit -d, especially.",
+ str);
+
+ MALLOC_WARNING_END();
+}
static void
malloc_after (void *val, Bytecount size)
Show replies by date