Index: uri.c =================================================================== RCS file: /cvs/gnome/gnome-xml/uri.c,v retrieving revision 1.48 retrieving revision 1.49 diff -c -r1.48 -r1.49 *** uri.c 22 Oct 2002 17:35:33 -0000 1.48 --- uri.c 28 Nov 2002 11:55:38 -0000 1.49 *************** *** 285,300 **** ret[len++] = lo + (lo > 9? 'A'-10 : '0'); } } - if (len >= 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++] = 0; } else { if (uri->server != NULL) { if (len + 3 >= max) { --- 285,290 ---- *************** *** 488,494 **** } } } ! if (uri->fragment != NULL) { if (len + 3 >= max) { max *= 2; ret = (xmlChar *) xmlRealloc(ret, --- 478,498 ---- } } } ! } ! if (uri->fragment != NULL) { ! 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 = uri->fragment; ! while (*p != 0) { if (len + 3 >= max) { max *= 2; ret = (xmlChar *) xmlRealloc(ret, *************** *** 499,539 **** return(NULL); } } ! ret[len++] = '#'; ! p = uri->fragment; ! while (*p != 0) { ! 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); ! } ! } ! if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) ! ret[len++] = *p++; ! else { ! int val = *(unsigned char *)p++; ! int hi = val / 0x10, lo = val % 0x10; ! ret[len++] = '%'; ! ret[len++] = hi + (hi > 9? 'A'-10 : '0'); ! ret[len++] = lo + (lo > 9? 'A'-10 : '0'); ! } } } ! if (len >= 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++] = 0; } return(ret); } --- 503,529 ---- return(NULL); } } ! if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) ! ret[len++] = *p++; ! else { ! int val = *(unsigned char *)p++; ! int hi = val / 0x10, lo = val % 0x10; ! ret[len++] = '%'; ! ret[len++] = hi + (hi > 9? 'A'-10 : '0'); ! ret[len++] = lo + (lo > 9? 'A'-10 : '0'); } } ! } ! if (len >= 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++] = 0; return(ret); } *************** *** 1074,1080 **** if (str == NULL) return (-1); ! while (IS_URIC(cur) || ((uri->cleanup) && (IS_UNWISE(cur)))) NEXT(cur); if (uri != NULL) { if (uri->fragment != NULL) --- 1064,1070 ---- if (str == NULL) return (-1); ! while (IS_URIC(cur) || IS_UNWISE(cur)) NEXT(cur); if (uri != NULL) { if (uri->fragment != NULL)