Changeset 1014
- Timestamp:
- 07/07/07 21:46:52 (1 year ago)
- Files:
-
- 1.8.2/branches/devel/CHANGES.182 (modified) (1 diff)
- 1.8.2/branches/devel/hdrs/externs.h (modified) (1 diff)
- 1.8.2/branches/devel/src/funmath.c (modified) (3 diffs)
- 1.8.2/branches/devel/src/parse.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
1.8.2/branches/devel/CHANGES.182
r999 r1014 29 29 * Fixed handling of telnet NOPs sent by clients. [SW] 30 30 * The OpenSSL random number pool wasn't getting adequately 31 initialized on systems without /dev/urandom 31 initialized on systems without /dev/urandom [SW] 32 * Infinite loop in math code. Reported by Ashen-Sugar. [GM] 32 33 33 34 Version 1.8.2 patchlevel 5 June 13, 2007 1.8.2/branches/devel/hdrs/externs.h
r1010 r1014 314 314 extern int is_strict_number(const char *str); 315 315 extern int is_strict_integer(const char *str); 316 int is_good_number(double); 316 317 317 318 /* From plyrlist.c */ 1.8.2/branches/devel/src/funmath.c
r1010 r1014 1250 1250 double num = 0, denom = 0; 1251 1251 NVAL n; 1252 int sign = 0;1253 1252 1254 1253 if (!is_number(args[0])) { … … 1261 1260 if (n < 0) { 1262 1261 n = fabs(n); 1263 s ign = 1;1262 safe_chr('-', buff, bp); 1264 1263 } else if (EQ(n, 0)) { 1265 1264 safe_chr('0', buff, bp); … … 1267 1266 } 1268 1267 1269 frac(n, &num, &denom, 1.0e-10); 1270 1271 if (sign) 1272 safe_chr('-', buff, bp); 1273 1274 if (fabs(denom - 1) < 1.0e-10) 1275 safe_format(buff, bp, "%.0f", num); 1276 else 1277 safe_format(buff, bp, "%.0f/%.0f", num, denom); 1268 if (is_good_number(n)) { 1269 frac(n, &num, &denom, 1.0e-10); 1270 1271 if (fabs(denom - 1) < 1.0e-10) 1272 safe_format(buff, bp, "%.0f", num); 1273 else 1274 safe_format(buff, bp, "%.0f/%.0f", num, denom); 1275 } else { 1276 safe_number(n, buff, bp); 1277 } 1278 1278 } 1279 1279 1.8.2/branches/devel/src/parse.c
r1010 r1014 345 345 return 0; 346 346 return end > str; 347 } 348 349 /** Is string a number that isn't inf or nan? 350 * \param num NVAL 351 * \retval 1 num is a good number. 352 * \retval 0 num is not a good number. 353 */ 354 int 355 is_good_number(NVAL val) 356 { 357 char numbuff[128]; 358 char *p; 359 snprintf(numbuff, 128, "%f", val); 360 p = numbuff; 361 /* Negative? */ 362 if (*p == '-') 363 p++; 364 /* Must start with a digit. */ 365 if (!*p || !isdigit((unsigned char) *p)) 366 return 0; 367 return 1; 347 368 } 348 369
