It looks like the _CHECK_MEMORY_LIMIT macro has one of the conditions
reversed: the diff below is rather unreadable, if you read the original
code the problem should be obvious:
if (file)
zend_error("..exhausted (tried...", ...)
else
zend_error("...exhausted at %s:%d (tried...", ..., file, lineno, ...)
gcc 3.3 with -Wall is giving warnings on this macro since it expands to
always pass a NULL as the %s argument in some places, but this isn't a
real issue when inside an if (NULL) condition.
Index: Zend/zend_alloc.c
===================================================================
RCS file: /repository/Zend/Attic/zend_alloc.c,v
retrieving revision 1.105.4.3
diff -u -r1.105.4.3 zend_alloc.c
--- Zend/zend_alloc.c 15 Apr 2003 01:30:46 -0000 1.105.4.3
+++ Zend/zend_alloc.c 13 Oct 2003 11:21:27 -0000
@@ -70,9 +70,9 @@
if (AG(memory_limit)+1048576 > AG(allocated_memory) - rs) { \
AG(memory_limit) = AG(allocated_memory) + 1048576; \
if (file) { \
- zend_error(E_ERROR,"Allowed memory size of %d bytes exhausted (tried to allocate %d bytes)", php_mem_limit, s); \
- } else { \
zend_error(E_ERROR,"Allowed memory size of %d bytes exhausted at %s:%d (tried to allocate %d bytes)", php_mem_limit, file, lineno, s); \
+ } else { \
+ zend_error(E_ERROR,"Allowed memory size of %d bytes exhausted (tried to allocate %d bytes)", php_mem_limit, s); \
} \
} else { \
if (file) { \