mercurial/cext/charencode.c
changeset 34030 e97be042fa1b
parent 33926 f4433f2713d0
child 34439 88e83a618de0
equal deleted inserted replaced
34029:6e6452bc441d 34030:e97be042fa1b
   292 				PyErr_SetString(PyExc_ValueError,
   292 				PyErr_SetString(PyExc_ValueError,
   293 						"cannot process non-ascii str");
   293 						"cannot process non-ascii str");
   294 				return -1;
   294 				return -1;
   295 			}
   295 			}
   296 			esclen += jsonparanoidlentable[(unsigned char)c];
   296 			esclen += jsonparanoidlentable[(unsigned char)c];
       
   297 			if (esclen < 0) {
       
   298 				PyErr_SetString(PyExc_MemoryError,
       
   299 						"overflow in jsonescapelen");
       
   300 				return -1;
       
   301 			}
   297 		}
   302 		}
   298 	} else {
   303 	} else {
   299 		for (i = 0; i < len; i++) {
   304 		for (i = 0; i < len; i++) {
   300 			char c = buf[i];
   305 			char c = buf[i];
   301 			esclen += jsonlentable[(unsigned char)c];
   306 			esclen += jsonlentable[(unsigned char)c];
       
   307 			if (esclen < 0) {
       
   308 				PyErr_SetString(PyExc_MemoryError,
       
   309 						"overflow in jsonescapelen");
       
   310 				return -1;
       
   311 			}
   302 		}
   312 		}
   303 	}
   313 	}
   304 
   314 
   305 	return esclen;
   315 	return esclen;
   306 }
   316 }
   364 
   374 
   365 	origbuf = PyBytes_AS_STRING(origstr);
   375 	origbuf = PyBytes_AS_STRING(origstr);
   366 	origlen = PyBytes_GET_SIZE(origstr);
   376 	origlen = PyBytes_GET_SIZE(origstr);
   367 	esclen = jsonescapelen(origbuf, origlen, paranoid);
   377 	esclen = jsonescapelen(origbuf, origlen, paranoid);
   368 	if (esclen < 0)
   378 	if (esclen < 0)
   369 		return NULL;  /* unsupported char found */
   379 		return NULL;  /* unsupported char found or overflow */
   370 	if (origlen == esclen) {
   380 	if (origlen == esclen) {
   371 		Py_INCREF(origstr);
   381 		Py_INCREF(origstr);
   372 		return origstr;
   382 		return origstr;
   373 	}
   383 	}
   374 
   384