Dr. Werner Fink 2013-10-18 14:18:08 +00:00 committed by Git OBS Bridge
parent 84c3a4146a
commit 42805f1cc8

View File

@ -134,3 +134,39 @@
if (!*t || isspace(*v) || *v == ',' || *v == '=')
break;
if (*v == ':' && *(v + 1) == '=')
--- src/lib/libast/vmalloc/vmopen.c
+++ src/lib/libast/vmalloc/vmopen.c 2013-10-18 13:54:50.918235639 +0000
@@ -68,19 +68,22 @@ int mode; /* type of region */
Block_t *bp, *np;
Seg_t *seg;
Vmuchar_t *addr;
- int rv;
+ int rv, mt;
if(!meth || !disc || !disc->memoryf )
return NIL(Vmalloc_t*);
GETPAGESIZE(_Vmpagesize);
+ mode = (mode&VM_FLAGS) | meth->meth; /* start with user-settable flags */
+
vmp = &vmproto; /* avoid memory allocation here! */
memset(vmp, 0, sizeof(Vmalloc_t));
memcpy(&vmp->meth, meth, sizeof(Vmethod_t));
+ mt = vmp->meth.meth;
+ vmp->meth.meth = 0;
vmp->disc = disc;
- mode &= VM_FLAGS; /* start with user-settable flags */
size = 0;
if(disc->exceptf)
@@ -155,6 +158,8 @@ int mode; /* type of region */
seg->free = bp;
else vd->wild = bp;
+ vmp->meth.meth = mt;
+
done: /* now make the region handle */
if(vd->mode&VM_MEMORYF)
vm = &init->vm.vm;