libxml2 r3714 - trunk
- From: veillard svn gnome org
- To: svn-commits-list gnome org
- Subject: libxml2 r3714 - trunk
- Date: Tue, 25 Mar 2008 13:22:41 +0000 (GMT)
Author: veillard
Date: Tue Mar 25 13:22:41 2008
New Revision: 3714
URL: http://svn.gnome.org/viewvc/libxml2?rev=3714&view=rev
Log:
* uri.c: fix saving for file:///X:/ URI embedding Windows file paths
  should fix #524253 
Daniel
Modified:
   trunk/ChangeLog
   trunk/uri.c
Modified: trunk/uri.c
==============================================================================
--- trunk/uri.c	(original)
+++ trunk/uri.c	Tue Mar 25 13:22:41 2008
@@ -421,6 +421,30 @@
 	}
 	if (uri->path != NULL) {
 	    p = uri->path;
+	    /*
+	     * the colon in file:///d: should not be escaped or
+	     * Windows accesses fail later.
+	     */
+	    if ((uri->scheme != NULL) &&
+		(p[0] == '/') &&
+		(((p[1] >= 'a') && (p[1] <= 'z')) ||
+		 ((p[1] >= 'A') && (p[1] <= 'Z'))) &&
+		(p[2] == ':') &&
+	        (xmlStrEqual(uri->scheme, BAD_CAST "file"))) {
+		if (len + 3 >= max) {
+		    max *= 2;
+		    ret = (xmlChar *) xmlRealloc(ret,
+			    (max + 1) * sizeof(xmlChar));
+		    if (ret == NULL) {
+			xmlGenericError(xmlGenericErrorContext,
+				"xmlSaveUri: out of memory\n");
+			return(NULL);
+		    }
+		}
+		ret[len++] = *p++;
+		ret[len++] = *p++;
+		ret[len++] = *p++;
+	    }
 	    while (*p != 0) {
 		if (len + 3 >= max) {
 		    max *= 2;
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]