From b76d376babfe13e51b31948f9d6ea49cc654763b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 18 Sep 2007 19:30:20 +0000 Subject: [PATCH] release modules on error in init_driver() free devices pointer in uninit_driver() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22246 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/bus/pcmcia/ds.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/drivers/bus/pcmcia/ds.c b/src/add-ons/kernel/drivers/bus/pcmcia/ds.c index 8eadd51ee5..125d3fb3ce 100644 --- a/src/add-ons/kernel/drivers/bus/pcmcia/ds.c +++ b/src/add-ons/kernel/drivers/bus/pcmcia/ds.c @@ -23,7 +23,7 @@ #define copy_to_user memcpy #define CardServices gPcmciaCs->_CardServices -const char sockname[] = "bus/pcmcia/sock/%d"; +const char sockname[] = "bus/pcmcia/sock/%ld"; static char ** devices; uint32 devices_count = 0; @@ -369,8 +369,11 @@ init_driver() devices_count++; } - if (devices_count <= 0) + if (devices_count <= 0) { + put_module(CS_CLIENT_MODULE_NAME); + put_module(DS_MODULE_NAME); return ENODEV; + } devices = malloc(sizeof(char *) * (devices_count+1)); for (i=0; i