Fixed memory leak in namec()
authorBarret Rhoden <brho@cs.berkeley.edu>
Sun, 12 Jan 2014 22:51:49 +0000 (14:51 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 17 Jan 2014 22:57:12 +0000 (14:57 -0800)
Calling nexterror() instead of error() popped off the second waserror,
skipping over a bunch of cleanup.  Careful with nexterror()!

kern/src/ns/chan.c

index c26e27b..03eeb1a 100644 (file)
@@ -1078,7 +1078,7 @@ namec(char *aname, int amode, int omode, uint32_t perm)
        if(walk(&c, e.elems, e.ARRAY_SIZEs, nomount, &npath) < 0){
                if(npath < 0 || npath > e.ARRAY_SIZEs){
                        printd("namec %s walk error npath=%d\n", aname, npath);
-                       nexterror();
+                       error("walk failed");
                }
 #warning "fix this mess with errstr and walking"
 #if 0
@@ -1094,7 +1094,6 @@ namec(char *aname, int amode, int omode, uint32_t perm)
                snprintf(current->errstr, ERRMAX, "%#q %s", get_cur_genbuf(), tmperrbuf);
 #endif
                error("some kinda name error");
-               nexterror();
        }
 
        if(e.mustbedir && !(c->qid.type&QTDIR)){