diff --git a/sys/src/9/port/netif.c b/sys/src/9/port/netif.c index 42a3b3ccc..0239fa201 100644 --- a/sys/src/9/port/netif.c +++ b/sys/src/9/port/netif.c @@ -418,11 +418,13 @@ netifwstat(Netif *nif, Chan *c, uchar *db, int n) error(Eperm); dir = smalloc(sizeof(Dir)+n); - m = convM2D(db, n, &dir[0], (char*)&dir[1]); - if(m == 0){ + if(waserror()){ free(dir); - error(Eshortstat); + nexterror(); } + m = convM2D(db, n, &dir[0], (char*)&dir[1]); + if(m == 0) + error(Eshortstat); if(!emptystr(dir[0].uid)){ strncpy(f->owner, dir[0].uid, KNAMELEN-1); f->owner[KNAMELEN-1] = 0; @@ -430,6 +432,7 @@ netifwstat(Netif *nif, Chan *c, uchar *db, int n) if(dir[0].mode != ~0UL) f->mode = dir[0].mode; free(dir); + poperror(); return m; }