AllocMemoryFromYap should now handle large requests the right way.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1272 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2005-04-10 04:35:19 +00:00
parent 5ae92827f4
commit b3d74b109a

View File

@ -10,8 +10,11 @@
* File: c_interface.c * * File: c_interface.c *
* comments: c_interface primitives definition * * comments: c_interface primitives definition *
* * * *
* Last rev: $Date: 2005-04-10 04:01:10 $,$Author: vsc $ * * Last rev: $Date: 2005-04-10 04:35:19 $,$Author: vsc $ *
* $Log: not supported by cvs2svn $ * $Log: not supported by cvs2svn $
* Revision 1.66 2005/04/10 04:01:10 vsc
* bug fixes, I hope!
*
* Revision 1.65 2005/03/15 18:29:23 vsc * Revision 1.65 2005/03/15 18:29:23 vsc
* fix GPL * fix GPL
* fix idb: stuff in coroutines. * fix idb: stuff in coroutines.
@ -758,15 +761,15 @@ YAP_AllocSpaceFromYap(unsigned int size)
void *ptr; void *ptr;
BACKUP_MACHINE_REGS(); BACKUP_MACHINE_REGS();
if ((ptr = Yap_AllocCodeSpace(size)) == NULL) { while ((ptr = Yap_AllocCodeSpace(size)) == NULL) {
if (!Yap_growheap(FALSE, size, NULL)) { if (!Yap_growheap(FALSE, size, NULL)) {
Yap_Error(OUT_OF_HEAP_ERROR, TermNil, Yap_ErrorMessage); Yap_Error(OUT_OF_HEAP_ERROR, TermNil, Yap_ErrorMessage);
return(NULL); return NULL;
} }
} }
RECOVER_MACHINE_REGS(); RECOVER_MACHINE_REGS();
return(ptr); return ptr;
} }
X_API void X_API void