summaryrefslogtreecommitdiff
path: root/XF86Config-parser/Device.c
diff options
context:
space:
mode:
Diffstat (limited to 'XF86Config-parser/Device.c')
-rw-r--r--XF86Config-parser/Device.c33
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);
}
}