diff --git a/relaxng.c b/relaxng.c
index c17b344..1813b60 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -2029,13 +2029,13 @@
 	     * Try to find contextual informations to report
 	     */
 	    if (node->type == XML_ELEMENT_NODE) {
-		line = (int) node->content;
+		line = (long) node->content;
 	    } else if ((node->prev != NULL) &&
 		       (node->prev->type == XML_ELEMENT_NODE)) {
-		line = (int) node->prev->content;
+		line = (long) node->prev->content;
 	    } else if ((node->parent != NULL) &&
 		       (node->parent->type == XML_ELEMENT_NODE)) {
-		line = (int) node->parent->content;
+		line = (long) node->parent->content;
 	    }
 	    if ((node->doc != NULL) && (node->doc->URL != NULL))
 		file = node->doc->URL;
@@ -4113,7 +4113,7 @@
 		if ((*tmp)->type == XML_RELAXNG_TEXT) {
 		    res = xmlHashAddEntry2(partitions->triage,
 					   BAD_CAST "#text", NULL,
-					   (void *)(i + 1));
+					   (void *)(long)(i + 1));
 		    if (res != 0)
 			is_determinist = -1;
 		} else if (((*tmp)->type == XML_RELAXNG_ELEMENT) &&
@@ -4121,22 +4121,22 @@
 		    if (((*tmp)->ns == NULL) || ((*tmp)->ns[0] == 0))
 			res = xmlHashAddEntry2(partitions->triage,
 				       (*tmp)->name, NULL,
-				       (void *)(i + 1));
+				       (void *)(long)(i + 1));
 		    else
 			res = xmlHashAddEntry2(partitions->triage,
 				       (*tmp)->name, (*tmp)->ns,
-				       (void *)(i + 1));
+				       (void *)(long)(i + 1));
 		    if (res != 0)
 			is_determinist = -1;
 		} else if ((*tmp)->type == XML_RELAXNG_ELEMENT) {
 		    if (((*tmp)->ns == NULL) || ((*tmp)->ns[0] == 0))
 			res = xmlHashAddEntry2(partitions->triage,
 				       BAD_CAST "#any", NULL,
-				       (void *)(i + 1));
+				       (void *)(long)(i + 1));
 		    else
 			res = xmlHashAddEntry2(partitions->triage,
 				       BAD_CAST "#any", (*tmp)->ns,
-				       (void *)(i + 1));
+				       (void *)(long)(i + 1));
 		    if ((*tmp)->nameClass != NULL)
 			is_determinist = 2;
 		    if (res != 0)
