ref: 7a9ecbed6a5baa70d5e7248f8a8d5d5eb88260e6
parent: 5331734335d2f1fbe5af90ca6b56ec10ffac48a6
parent: 8a3a36fc056950f2d5aa3bc6b9587fc5e2984ca2
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Tue May 21 14:58:13 EDT 2013
merge
--- a/sys/src/9/port/allocb.c
+++ b/sys/src/9/port/allocb.c
@@ -64,10 +64,16 @@
*/
if(up == nil)
panic("allocb without up: %#p", getcallerpc(&size));- if((b = _allocb(size)) == nil){- xsummary();
- mallocsummary();
- panic("allocb: no memory for %d bytes", size);+ while((b = _allocb(size)) == nil){+ if(up->nlocks.ref || m->ilockdepth || !islo()){+ xsummary();
+ mallocsummary();
+ panic("allocb: no memory for %d bytes", size);+ }
+ if(!waserror()){+ resrcwait("no memory for allocb");+ poperror();
+ }
}
setmalloctag(b, getcallerpc(&size));
--
⑨