Changeset 24394 in webkit for trunk/JavaScriptCore/kjs/function.cpp
- Timestamp:
- Jul 17, 2007, 7:25:38 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/function.cpp
r24244 r24394 5 5 * Copyright (C) 2001 Peter Kelly ([email protected]) 6 6 * Copyright (C) 2003 Apple Computer, Inc. 7 * Copyright (C) 2007 Cameron Zwarich ([email protected]) 7 8 * 8 9 * This library is free software; you can redistribute it and/or … … 26 27 #include "function.h" 27 28 29 #include "dtoa.h" 28 30 #include "internal.h" 29 31 #include "function_object.h" … … 670 672 } 671 673 674 double parseIntOverflow(const char* s, int length, int radix) 675 { 676 double number = 0.0; 677 double radixMultiplier = 1.0; 678 679 for (const char* p = s + length - 1; p >= s; p--) { 680 if (radixMultiplier == Inf) { 681 if (*p != '0') { 682 number = Inf; 683 break; 684 } 685 } else { 686 int digit = parseDigit(*p, radix); 687 number += digit * radixMultiplier; 688 } 689 690 radixMultiplier *= radix; 691 } 692 693 return number; 694 } 695 672 696 static double parseInt(const UString& s, int radix) 673 697 { … … 702 726 return NaN; 703 727 728 int firstDigitPosition = p; 704 729 bool sawDigit = false; 705 730 double number = 0; … … 712 737 number += digit; 713 738 ++p; 739 } 740 741 if (number >= mantissaOverflowLowerBound) { 742 if (radix == 10) 743 number = kjs_strtod(s.substr(firstDigitPosition, p - firstDigitPosition).ascii(), 0); 744 else if (radix == 2 || radix == 4 || radix == 8 || radix == 16 || radix == 32) 745 number = parseIntOverflow(s.substr(firstDigitPosition, p - firstDigitPosition).ascii(), p - firstDigitPosition, radix); 714 746 } 715 747
Note:
See TracChangeset
for help on using the changeset viewer.