+
+ _mlock(_POPEN_LOCK);
+ for(i=0; i<popen_handles_size; i++)
+ {
+ if (!popen_handles[i].f)
+ break;
+ }
+ if (i==popen_handles_size)
+ {
+ i = (popen_handles_size ? popen_handles_size*2 : 8);
+ container = realloc(popen_handles, i*sizeof(*container));
+ if (!container) goto error;
+
+ popen_handles = container;
+ container = popen_handles+popen_handles_size;
+ memset(container, 0, (i-popen_handles_size)*sizeof(*container));
+ popen_handles_size = i;
+ }
+ else container = popen_handles+i;