Ensure syspipe() catches error()
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 15 Sep 2015 14:46:13 +0000 (10:46 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 28 Sep 2015 19:14:00 +0000 (15:14 -0400)
namec() can throw.  If we throw before the waserror, it'll propagate up
to the non-9ns code.

kern/src/ns/sysfile.c

index 2e6445e..22e3db1 100644 (file)
@@ -336,7 +336,7 @@ int syspipe(int fd[2])
        static char *names[] = { "data", "data1" };
 
        d = &devtab[devno('|', 0)];
-       c[0] = namec("#|", Atodir, 0, 0);
+       c[0] = 0;
        c[1] = 0;
        fd[0] = -1;
        fd[1] = -1;
@@ -356,6 +356,7 @@ int syspipe(int fd[2])
                poperror();
                return -1;
        }
+       c[0] = namec("#|", Atodir, 0, 0);
        c[1] = cclone(c[0]);
        if (walk(&c[0], &names[0], 1, 1, NULL) < 0)
                error(Egreg);