summaryrefslogtreecommitdiff
path: root/src/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core.c')
-rw-r--r--src/core.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/core.c b/src/core.c
index 1f7c1fe..07bc828 100644
--- a/src/core.c
+++ b/src/core.c
@@ -365,11 +365,11 @@ int mtdev_open(struct mtdev *dev, int fd)
365 goto error; 365 goto error;
366 ret = mtdev_configure(dev, fd); 366 ret = mtdev_configure(dev, fd);
367 if (ret) 367 if (ret)
368 goto mtdev; 368 goto error;
369 return 0; 369 return 0;
370 mtdev: 370
371 mtdev_close(dev);
372 error: 371 error:
372 mtdev_close(dev);
373 return ret; 373 return ret;
374} 374}
375 375
@@ -411,8 +411,10 @@ void mtdev_close_delete(struct mtdev *dev)
411 411
412void mtdev_close(struct mtdev *dev) 412void mtdev_close(struct mtdev *dev)
413{ 413{
414 free(dev->state); 414 if (dev) {
415 memset(dev, 0, sizeof(struct mtdev)); 415 free(dev->state);
416 memset(dev, 0, sizeof(struct mtdev));
417 }
416} 418}
417 419
418void mtdev_delete(struct mtdev *dev) 420void mtdev_delete(struct mtdev *dev)