--- /dev/null
+--- a/src/roxml_mem.c
++++ b/src/roxml_mem.c
+@@ -20,7 +20,7 @@ ROXML_STATIC ROXML_INT inline void roxml
+ memory_cell_t *ptr = &head_cell;
+ memory_cell_t *to_delete = NULL;
+
+- while ((ptr->prev != NULL) && (ptr->prev->id != pthread_self()))
++ while ((ptr->prev != NULL) && (ptr->prev->id != (unsigned long int)pthread_self()))
+ ptr = ptr->prev;
+
+ if (ptr->prev == NULL)
+@@ -135,7 +135,7 @@ ROXML_INT void *roxml_malloc(int size, i
+ cell->next->prev = cell;
+ cell = cell->next;
+ cell->type = type;
+- cell->id = pthread_self();
++ cell->id = (unsigned long int)pthread_self();
+ cell->occ = size;
+ cell->ptr = calloc(num, size);
+ head_cell.prev = cell;
+--- a/src/roxml_utils.h
++++ b/src/roxml_utils.h
+@@ -48,7 +48,7 @@ ROXML_STATIC_INLINE ROXML_INT int roxml_
+ #else /* CONFIG_XML_THREAD_SAFE==1 */
+ ROXML_STATIC_INLINE ROXML_INT unsigned long int roxml_thread_id(node_t *n)
+ {
+- return pthread_self();
++ return (unsigned long int)pthread_self();
+ }
+
+ ROXML_STATIC_INLINE ROXML_INT int roxml_lock_init(node_t *n)