diff --git a/list.c b/list.c
index 756912a..18a8297 100644
--- a/list.c
+++ b/list.c
@@ -181,7 +181,8 @@
 {
     xmlListPtr l;
     if (NULL == (l = (xmlListPtr )xmlMalloc( sizeof(xmlList)))) {
-        perror("Cannot initialize memory for list");
+        xmlGenericError(xmlGenericErrorContext, 
+		        "Cannot initialize memory for list");
         return (NULL);
     }
     /* Initialize the list to NULL */
@@ -189,7 +190,8 @@
     
     /* Add the sentinel */
     if (NULL ==(l->sentinel = (xmlLinkPtr )xmlMalloc(sizeof(xmlLink)))) {
-        perror("Cannot initialize memory for sentinel");
+        xmlGenericError(xmlGenericErrorContext, 
+		        "Cannot initialize memory for sentinel");
 	xmlFree(l);
         return (NULL);
     }
@@ -264,7 +266,8 @@
     /* Add the new link */
     lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink));
     if (lkNew == NULL) {
-        perror("Cannot initialize memory for new link");
+        xmlGenericError(xmlGenericErrorContext, 
+		        "Cannot initialize memory for new link");
         return (1);
     }
     lkNew->data = data;
@@ -293,7 +296,8 @@
     /* Add the new link */
     lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink));
     if (lkNew == NULL) {
-        perror("Cannot initialize memory for new link");
+        xmlGenericError(xmlGenericErrorContext, 
+		        "Cannot initialize memory for new link");
         return (0);
     }
     lkNew->data = data;
@@ -507,7 +511,8 @@
     /* Add the new link */
     lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink));
     if (lkNew == NULL) {
-        perror("Cannot initialize memory for new link");
+        xmlGenericError(xmlGenericErrorContext, 
+		        "Cannot initialize memory for new link");
         return (0);
     }
     lkNew->data = data;
@@ -535,7 +540,8 @@
     lkPlace = l->sentinel->prev;
     /* Add the new link */
     if (NULL ==(lkNew = (xmlLinkPtr )xmlMalloc(sizeof(xmlLink)))) {
-        perror("Cannot initialize memory for new link");
+        xmlGenericError(xmlGenericErrorContext, 
+		        "Cannot initialize memory for new link");
         return (0);
     }
     lkNew->data = data;
