From d3b727db18c04b1eb485399dfcebff8ff61d8c7b Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 5 May 2013 04:28:50 +0200 Subject: [PATCH] devip: dont raise error() out of Fsprotocone() Fsprotoclone() is not supposed to raise error, but return nil. ipopen() seemed to assume otherwise as it setup error label before calling Fsprotoclone(). fix ipopen(), make Fsprotoclone() return nil instead of raising error. --- sys/src/9/ip/devip.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/sys/src/9/ip/devip.c b/sys/src/9/ip/devip.c index 74c83ea6d..7e7b379b4 100644 --- a/sys/src/9/ip/devip.c +++ b/sys/src/9/ip/devip.c @@ -407,13 +407,8 @@ ipopen(Chan* c, int omode) case Qclone: p = f->p[PROTO(c->qid)]; qlock(p); - if(waserror()){ - qunlock(p); - nexterror(); - } cv = Fsprotoclone(p, ATTACHER(c)); qunlock(p); - poperror(); if(cv == nil) { error(Enodev); break; @@ -1285,7 +1280,7 @@ retry: if(c == nil){ c = malloc(sizeof(Conv)); if(c == nil) - error(Enomem); + return nil; if(waserror()){ qfree(c->rq); qfree(c->wq); @@ -1293,7 +1288,7 @@ retry: qfree(c->sq); free(c->ptcl); free(c); - nexterror(); + return nil; } c->p = p; c->x = pp - p->conv;