src/solaris/native/java/lang/UNIXProcess_md.c

Print this page




 673     }
 674 
 675     fds[0] = (in [1] != -1) ? in [1] : -1;
 676     fds[1] = (out[0] != -1) ? out[0] : -1;
 677     fds[2] = (err[0] != -1) ? err[0] : -1;
 678 
 679  Finally:
 680     free(c->clone_stack);
 681 
 682     /* Always clean up the child's side of the pipes */
 683     closeSafely(in [0]);
 684     closeSafely(out[1]);
 685     closeSafely(err[1]);
 686 
 687     /* Always clean up fail and childEnv descriptors */
 688     closeSafely(fail[0]);
 689     closeSafely(fail[1]);
 690     closeSafely(childenv[0]);
 691     closeSafely(childenv[1]);
 692 

 693     releaseBytes(env, prog,     pprog);
 694     releaseBytes(env, argBlock, pargBlock);
 695     releaseBytes(env, envBlock, penvBlock);
 696     releaseBytes(env, dir,      c->pdir);
 697 
 698     free(c->argv);
 699     free(c->envv);
 700     free(c);
 701 
 702     if (fds != NULL)
 703         (*env)->ReleaseIntArrayElements(env, std_fds, fds, 0);
 704 
 705     return resultPid;
 706 
 707  Catch:
 708     /* Clean up the parent's side of the pipes in case of failure only */
 709     closeSafely(in [1]); in[1] = -1;
 710     closeSafely(out[0]); out[0] = -1;
 711     closeSafely(err[0]); err[0] = -1;
 712     goto Finally;


 673     }
 674 
 675     fds[0] = (in [1] != -1) ? in [1] : -1;
 676     fds[1] = (out[0] != -1) ? out[0] : -1;
 677     fds[2] = (err[0] != -1) ? err[0] : -1;
 678 
 679  Finally:
 680     free(c->clone_stack);
 681 
 682     /* Always clean up the child's side of the pipes */
 683     closeSafely(in [0]);
 684     closeSafely(out[1]);
 685     closeSafely(err[1]);
 686 
 687     /* Always clean up fail and childEnv descriptors */
 688     closeSafely(fail[0]);
 689     closeSafely(fail[1]);
 690     closeSafely(childenv[0]);
 691     closeSafely(childenv[1]);
 692 
 693     releaseBytes(env, helperpath, phelperpath);
 694     releaseBytes(env, prog,     pprog);
 695     releaseBytes(env, argBlock, pargBlock);
 696     releaseBytes(env, envBlock, penvBlock);
 697     releaseBytes(env, dir,      c->pdir);
 698 
 699     free(c->argv);
 700     free(c->envv);
 701     free(c);
 702 
 703     if (fds != NULL)
 704         (*env)->ReleaseIntArrayElements(env, std_fds, fds, 0);
 705 
 706     return resultPid;
 707 
 708  Catch:
 709     /* Clean up the parent's side of the pipes in case of failure only */
 710     closeSafely(in [1]); in[1] = -1;
 711     closeSafely(out[0]); out[0] = -1;
 712     closeSafely(err[0]); err[0] = -1;
 713     goto Finally;