diff --git a/sim_ether.c b/sim_ether.c index 916769c1..cf5cf438 100644 --- a/sim_ether.c +++ b/sim_ether.c @@ -1902,9 +1902,9 @@ sim_debug(dev->dbit, dev->dptr, "Writer Thread Starting\n"); pthread_mutex_lock (&dev->writer_lock); while (dev->handle) { pthread_cond_wait (&dev->writer_cond, &dev->writer_lock); - if (dev->handle == NULL) /* Shutting down? */ - break; while (NULL != (request = dev->write_requests)) { + if (dev->handle == NULL) /* Shutting down? */ + break; /* Pull buffer off request list */ dev->write_requests = request->next; pthread_mutex_unlock (&dev->writer_lock); diff --git a/slirp_glue/sim_slirp.c b/slirp_glue/sim_slirp.c index f44d1b95..b63af46f 100644 --- a/slirp_glue/sim_slirp.c +++ b/slirp_glue/sim_slirp.c @@ -456,6 +456,10 @@ int sim_slirp_send (SLIRP *slirp, const char *msg, size_t len, int flags) struct slirp_write_request *request; int wake_needed = 0; +if (!slirp) { + errno = EBADF; + return 0; + } /* Get a buffer */ pthread_mutex_lock (&slirp->write_buffer_lock); if (NULL != (request = slirp->write_buffers))