applied patch from from Patrik Fimml. Fixes bug #458268

* uri.c: applied patch from from Patrik Fimml.  Fixes bug #458268

svn path=/trunk/; revision=3645
diff --git a/uri.c b/uri.c
index 4f5e182..34841af 100644
--- a/uri.c
+++ b/uri.c
@@ -2258,7 +2258,8 @@
 	    uptr = (xmlChar *) ref->path;
 	    if (*uptr == '/')
 		uptr++;
-	    val = xmlStrdup(uptr);
+	    /* exception characters from xmlSaveUri */
+	    val = xmlURIEscapeStr(uptr, BAD_CAST "/;&=+$,");
 	}
 	goto done;
     }
@@ -2322,7 +2323,8 @@
     
     if (nbslash == 0) {
 	if (uptr != NULL)
-	    val = xmlStrdup (uptr);
+	    /* exception characters from xmlSaveUri */
+	    val = xmlURIEscapeStr(uptr, BAD_CAST "/;&=+$,");
 	goto done;
     }
 
@@ -2362,6 +2364,12 @@
 	vptr[len - 1] = 0;
     }
 
+    /* escape the freshly-built path */
+    vptr = val;
+	/* exception characters from xmlSaveUri */
+    val = xmlURIEscapeStr(vptr, BAD_CAST "/;&=+$,");
+    xmlFree(vptr);
+
 done:
     /*
      * Free the working variables