[svn-commits] murf: branch murf/utf8-whatif r90159 - /team/murf/utf8-whatif/main/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Nov 29 12:50:22 CST 2007


Author: murf
Date: Thu Nov 29 12:50:22 2007
New Revision: 90159

URL: http://svn.digium.com/view/asterisk?view=rev&rev=90159
Log:
fixed various range notation bugs. A little cleanup. Looks pretty good.

Modified:
    team/murf/utf8-whatif/main/pbx.c
    team/murf/utf8-whatif/main/unicode.c

Modified: team/murf/utf8-whatif/main/pbx.c
URL: http://svn.digium.com/view/asterisk/team/murf/utf8-whatif/main/pbx.c?view=diff&rev=90159&r1=90158&r2=90159
==============================================================================
--- team/murf/utf8-whatif/main/pbx.c (original)
+++ team/murf/utf8-whatif/main/pbx.c Thu Nov 29 12:50:22 2007
@@ -872,7 +872,7 @@
 	struct match_char_range *w;
 	ast_ucs4_to_utf8(node->x, buf, buflen, &z);
 	
-	if (*z) { 
+	if (*z) { /* we didn't fit the whole thing in the output buf... */ 
 		if (strlen(buf) +3 < buflen) {
 			strcat(buf,"...");
 			buflen -= 3;
@@ -885,24 +885,23 @@
 		char max_range_buffer[1024], *mcrp;
 		ucs4_t ucs4buf[2];
 		ucs4buf[1] = 0;
-		max_range_buffer[0] = '[';
+		max_range_buffer[0] = 0;
 		max_range_buffer[1] = 0;
-		mcrp = max_range_buffer+1;
+		mcrp = max_range_buffer;
 		
 		for(w=node->mcr;w;w=w->next)
 		{
 			ucs4buf[0] = w->start;
-			ast_ucs4_to_utf8(ucs4buf, mcrp, 1022-(mcrp-max_range_buffer), 0);
+			ast_ucs4_to_utf8(ucs4buf, mcrp, sizeof(max_range_buffer)-2-(mcrp-max_range_buffer), 0);
 			while (*mcrp)
 				mcrp++;
 			*mcrp++ = '-';
 			ucs4buf[0] = w->end;
-			ast_ucs4_to_utf8(ucs4buf, mcrp, 1022-(mcrp-max_range_buffer), 0);
+			ast_ucs4_to_utf8(ucs4buf, mcrp, sizeof(max_range_buffer)-2-(mcrp-max_range_buffer), 0);
 			while (*mcrp)
 				mcrp++;
 			*mcrp = 0;
 		}
-		strcat(max_range_buffer,"]");
 
 		if (strlen(max_range_buffer) < buflen)
 		{
@@ -1334,6 +1333,7 @@
 				}
 			}
 			*s2 = 0; /* null terminate the character class */
+			next_char = s1+1;
 			specif = ucs4_strlen(buf);
 		} else {
 			

Modified: team/murf/utf8-whatif/main/unicode.c
URL: http://svn.digium.com/view/asterisk/team/murf/utf8-whatif/main/unicode.c?view=diff&rev=90159&r1=90158&r2=90159
==============================================================================
--- team/murf/utf8-whatif/main/unicode.c (original)
+++ team/murf/utf8-whatif/main/unicode.c Thu Nov 29 12:50:22 2007
@@ -105,7 +105,8 @@
 char *ast_ucs4_to_utf8(ucs4_t *ucs, char *out, int outlen, ucs4_t **next)
 {
 	unsigned char *buf = (unsigned char *)out;
-	
+	if (!ucs)
+		return NULL;
 	while (*ucs && outlen > 0)
 	{
 		unsigned char t;
@@ -113,7 +114,8 @@
 		if (*ucs < 0x80) { /* one byte out */
 			if (outlen < 2) {
 				/* no room left */
-				*next = ucs;
+				if (next)
+					*next = ucs;
 				*buf = 0;
 				return out;
 			} else {
@@ -124,7 +126,8 @@
 		} else if (*ucs < 0x800) { /* two bytes out */
 			if (outlen < 3) {
 				/* no room left */
-				*next = ucs;
+				if (next)
+					*next = ucs;
 				*buf = 0;
 				return out;
 			} else {
@@ -138,7 +141,8 @@
 		} else if (*ucs < 0x10000) { /* three bytes out */
 			if (outlen < 4) {
 				/* no room left */
-				*next = ucs;
+				if (next)
+					*next = ucs;
 				*buf = 0;
 				return out;
 			} else {
@@ -154,7 +158,8 @@
 		} else { /* four bytes out */
 			if (outlen < 5) {
 				/* no room left */
-				*next = ucs;
+				if (next)
+					*next = ucs;
 				*buf = 0;
 				return out;
 			} else {
@@ -173,6 +178,8 @@
 		ucs++;
 	}
 	*buf = 0;
+	if (next)
+		*next = ucs;
 	return out;
 }
 
@@ -269,6 +276,7 @@
 		return 0;
 	for (i=0; i<size; i++)
 		p[i] = ustr[i];
+	p[i] = 0;
 	return p;
 }
 




More information about the svn-commits mailing list