diff options
Diffstat (limited to 'XF86Config-parser/Device.c')
-rw-r--r-- | XF86Config-parser/Device.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/XF86Config-parser/Device.c b/XF86Config-parser/Device.c index a4c3f62..a374fa4 100644 --- a/XF86Config-parser/Device.c +++ b/XF86Config-parser/Device.c @@ -329,25 +329,28 @@ xconfigPrintDeviceSection (FILE * cf, XConfigDevicePtr ptr) } void -xconfigFreeDeviceList (XConfigDevicePtr ptr) +xconfigFreeDeviceList (XConfigDevicePtr *ptr) { XConfigDevicePtr prev; - while (ptr) + if (ptr == NULL || *ptr == NULL) + return; + + while (*ptr) { - TEST_FREE (ptr->identifier); - TEST_FREE (ptr->vendor); - TEST_FREE (ptr->board); - TEST_FREE (ptr->chipset); - TEST_FREE (ptr->card); - TEST_FREE (ptr->driver); - TEST_FREE (ptr->ramdac); - TEST_FREE (ptr->clockchip); - TEST_FREE (ptr->comment); - xconfigOptionListFree (ptr->options); - - prev = ptr; - ptr = ptr->next; + TEST_FREE ((*ptr)->identifier); + TEST_FREE ((*ptr)->vendor); + TEST_FREE ((*ptr)->board); + TEST_FREE ((*ptr)->chipset); + TEST_FREE ((*ptr)->card); + TEST_FREE ((*ptr)->driver); + TEST_FREE ((*ptr)->ramdac); + TEST_FREE ((*ptr)->clockchip); + TEST_FREE ((*ptr)->comment); + xconfigFreeOptionList (&((*ptr)->options)); + + prev = *ptr; + *ptr = (*ptr)->next; free (prev); } } |