diff options
| -rw-r--r-- | src/core.c | 12 |
1 files changed, 7 insertions, 5 deletions
| @@ -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 | ||
| 412 | void mtdev_close(struct mtdev *dev) | 412 | void 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 | ||
| 418 | void mtdev_delete(struct mtdev *dev) | 420 | void mtdev_delete(struct mtdev *dev) |
