diff --git a/relaxng.c b/relaxng.c
index 056aaf7..e1def1c 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -7786,7 +7786,7 @@
 static int xmlRelaxNGValidateAttributeList(xmlRelaxNGValidCtxtPtr ctxt,
                                            xmlRelaxNGDefinePtr defines);
 static int xmlRelaxNGValidateElementEnd(xmlRelaxNGValidCtxtPtr ctxt,
-                                        int log);
+                                        int dolog);
 static void xmlRelaxNGLogBestError(xmlRelaxNGValidCtxtPtr ctxt);
 
 /**
@@ -9423,7 +9423,7 @@
 /**
  * xmlRelaxNGValidateElementEnd:
  * @ctxt:  a Relax-NG validation context
- * @log:  indicate that error logging should be done
+ * @dolog:  indicate that error logging should be done
  *
  * Validate the end of the element, implements check that
  * there is nothing left not consumed in the element content
@@ -9432,7 +9432,7 @@
  * Returns 0 if the validation succeeded or an error code.
  */
 static int
-xmlRelaxNGValidateElementEnd(xmlRelaxNGValidCtxtPtr ctxt, int log)
+xmlRelaxNGValidateElementEnd(xmlRelaxNGValidCtxtPtr ctxt, int dolog)
 {
     int i;
     xmlRelaxNGValidStatePtr state;
@@ -9441,7 +9441,7 @@
     if (state->seq != NULL) {
         state->seq = xmlRelaxNGSkipIgnored(ctxt, state->seq);
         if (state->seq != NULL) {
-            if (log) {
+            if (dolog) {
                 VALID_ERR3(XML_RELAXNG_ERR_EXTRACONTENT,
                            state->node->name, state->seq->name);
             }
@@ -9450,7 +9450,7 @@
     }
     for (i = 0; i < state->nbAttrs; i++) {
         if (state->attrs[i] != NULL) {
-            if (log) {
+            if (dolog) {
                 VALID_ERR3(XML_RELAXNG_ERR_INVALIDATTR,
                            state->attrs[i]->name, state->node->name);
             }
