[Python-checkins] python/dist/src/Objects complexobject.c, 2.70, 2.71 floatobject.c, 2.130, 2.131 stringobject.c, 2.217, 2.218

loewis at users.sourceforge.net loewis at users.sourceforge.net
Tue Jun 8 14:52:59 EDT 2004


Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26461/Objects

Modified Files:
	complexobject.c floatobject.c stringobject.c 
Log Message:
Patch #774665: Make Python LC_NUMERIC agnostic.


Index: complexobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/complexobject.c,v
retrieving revision 2.70
retrieving revision 2.71
diff -C2 -d -r2.70 -r2.71
*** complexobject.c	12 Oct 2003 19:09:37 -0000	2.70
--- complexobject.c	8 Jun 2004 18:52:53 -0000	2.71
***************
*** 273,283 ****
  complex_to_buf(char *buf, int bufsz, PyComplexObject *v, int precision)
  {
! 	if (v->cval.real == 0.)
! 		PyOS_snprintf(buf, bufsz, "%.*gj",
! 			      precision, v->cval.imag);
! 	else
! 		PyOS_snprintf(buf, bufsz, "(%.*g%+.*gj)",
! 			      precision, v->cval.real,
! 			      precision, v->cval.imag);
  }
  
--- 273,289 ----
  complex_to_buf(char *buf, int bufsz, PyComplexObject *v, int precision)
  {
! 	char format[32];
! 	if (v->cval.real == 0.) {
! 		PyOS_snprintf(format, 32, "%%.%ig", precision);
! 		PyOS_ascii_formatd(buf, bufsz, format, v->cval.imag);
! 		strncat(buf, "j", bufsz);
! 	} else {
! 		char re[64], im[64];
! 		
! 		PyOS_snprintf(format, 32, "%%.%ig", precision);
! 		PyOS_ascii_formatd(re, 64, format, v->cval.real);
! 		PyOS_ascii_formatd(im, 64, format, v->cval.imag);
! 		PyOS_snprintf(buf, bufsz, "(%s+%sj)", re, im);
! 	}
  }
  
***************
*** 663,667 ****
  complex_subtype_from_string(PyTypeObject *type, PyObject *v)
  {
- 	extern double strtod(const char *, char **);
  	const char *s, *start;
  	char *end;
--- 669,672 ----
***************
*** 775,779 ****
  			errno = 0;
  			PyFPE_START_PROTECT("strtod", return 0)
! 				z = strtod(s, &end) ;
  			PyFPE_END_PROTECT(z)
  				if (errno != 0) {
--- 780,784 ----
  			errno = 0;
  			PyFPE_START_PROTECT("strtod", return 0)
! 				z = PyOS_ascii_strtod(s, &end) ;
  			PyFPE_END_PROTECT(z)
  				if (errno != 0) {

Index: floatobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/floatobject.c,v
retrieving revision 2.130
retrieving revision 2.131
diff -C2 -d -r2.130 -r2.131
*** floatobject.c	26 May 2004 17:36:12 -0000	2.130
--- floatobject.c	8 Jun 2004 18:52:53 -0000	2.131
***************
*** 133,137 ****
           */
  	PyFPE_START_PROTECT("strtod", return NULL)
! 	x = strtod(s, (char **)&end);
  	PyFPE_END_PROTECT(x)
  	errno = 0;
--- 133,137 ----
           */
  	PyFPE_START_PROTECT("strtod", return NULL)
! 	x = PyOS_ascii_strtod(s, (char **)&end);
  	PyFPE_END_PROTECT(x)
  	errno = 0;
***************
*** 165,169 ****
  		   about denorms. */
  		PyFPE_START_PROTECT("atof", return NULL)
! 		x = atof(s);
  		PyFPE_END_PROTECT(x)
  		errno = 0;    /* whether atof ever set errno is undefined */
--- 165,169 ----
  		   about denorms. */
  		PyFPE_START_PROTECT("atof", return NULL)
! 		x = PyOS_ascii_atof(s);
  		PyFPE_END_PROTECT(x)
  		errno = 0;    /* whether atof ever set errno is undefined */
***************
*** 224,227 ****
--- 224,228 ----
  {
  	register char *cp;
+ 	char format[32];
  	/* Subroutine for float_repr and float_print.
  	   We want float numbers to be recognizable as such,
***************
*** 231,235 ****
  
  	assert(PyFloat_Check(v));
! 	PyOS_snprintf(buf, buflen, "%.*g", precision, v->ob_fval);
  	cp = buf;
  	if (*cp == '-')
--- 232,237 ----
  
  	assert(PyFloat_Check(v));
! 	PyOS_snprintf(format, 32, "%%.%ig", precision);
! 	PyOS_ascii_formatd(buf, buflen, format, v->ob_fval);
  	cp = buf;
  	if (*cp == '-')

Index: stringobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/stringobject.c,v
retrieving revision 2.217
retrieving revision 2.218
diff -C2 -d -r2.217 -r2.218
*** stringobject.c	5 Jan 2004 00:29:51 -0000	2.217
--- stringobject.c	8 Jun 2004 18:52:54 -0000	2.218
***************
*** 3583,3587 ****
  		      (flags&F_ALT) ? "#" : "",
  		      prec, type);
! 	PyOS_snprintf(buf, buflen, fmt, x);
  	return strlen(buf);
  }
--- 3583,3587 ----
  		      (flags&F_ALT) ? "#" : "",
  		      prec, type);
!         PyOS_ascii_formatd(buf, buflen, fmt, x);
  	return strlen(buf);
  }




More information about the Python-checkins mailing list