fixing an use of strcpy() where both strings overlap pointed out by

* uri.c: fixing an use of strcpy() where both strings overlap
  pointed out by valgrind.
Daniel
diff --git a/ChangeLog b/ChangeLog
index b8bcac0..e6813ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Aug 15 00:41:58 CEST 2003 Daniel Veillard <daniel@veillard.com>
+
+	* uri.c: fixing an use of strcpy() where both strings overlap
+	  pointed out by valgrind.
+
 Thu Aug 14 17:10:39 CEST 2003 Daniel Veillard <daniel@veillard.com>
 
 	* DOCBparser.c globals.c include/libxml/xmlmemory.h: get rid of
diff --git a/uri.c b/uri.c
index 6b0aa27..13c875b 100644
--- a/uri.c
+++ b/uri.c
@@ -691,7 +691,7 @@
      * "current position" pointer.
      */
     while (1) {
-        char *segp;
+        char *segp, *tmp;
 
         /* At the beginning of each iteration of this loop, "cur" points to
          * the first character of the segment we want to examine.
@@ -731,7 +731,11 @@
           cur[0] = '\0';
           break;
         }
-        strcpy(cur, segp + 3);
+        /* Valgrind complained, strcpy(cur, segp + 3); */
+	/* string will overlap, do not use strcpy */
+	tmp = cur;
+	segp += 3;
+	while ((*tmp++ = *segp++) != 0);
 
         /* If there are no previous segments, then keep going from here.  */
         segp = cur;