Changeset 346
- Timestamp:
- Feb 20, 2009, 3:09:25 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/System/Sources/libc/src/stdlib.c
r330 r346 635 635 636 636 /* strtol */ 637 static unsigned long _strtoul(char const * str, char ** endptr, int base,637 static unsigned long long _strtoull(char const * str, char ** endptr, int base, 638 638 int * neg); 639 639 640 long strtol(char const * str, char ** endptr, int base) 640 641 { … … 642 643 int neg = 0; 643 644 644 ret = _strtoul (str, endptr, base, &neg);645 ret = _strtoull(str, endptr, base, &neg); 645 646 if(neg != 0) 646 647 { … … 660 661 } 661 662 662 static unsigned long _strtoul(char const * str, char ** endptr, int base,663 static unsigned long long _strtoull(char const * str, char ** endptr, int base, 663 664 int * neg) 664 665 { 665 unsigned long ret = 0;666 unsigned long long ret = 0; 666 667 char const * p; 667 668 int r; … … 723 724 724 725 726 /* strtoll */ 727 long long strtoll(char const * str, char ** endptr, int base) 728 { 729 unsigned long long ret; 730 int neg = 0; 731 732 ret = _strtoull(str, endptr, base, &neg); 733 if(neg != 0) 734 { 735 if(ret > (unsigned)LONG_MAX+1) 736 { 737 errno = ERANGE; 738 return LONG_MIN; 739 } 740 return -ret; 741 } 742 if(ret > LONG_MAX) 743 { 744 errno = ERANGE; 745 return LONG_MAX; 746 } 747 return ret; 748 } 749 750 725 751 /* strtoul */ 726 752 unsigned long strtoul(char const * str, char ** endptr, int base) 727 753 { 728 return _strtoul(str, endptr, base, NULL); 754 return _strtoull(str, endptr, base, NULL); 755 } 756 757 758 /* strtoull */ 759 unsigned long long strtoull(char const * str, char ** endptr, int base) 760 { 761 return _strtoull(str, endptr, base, NULL); 729 762 } 730 763
Note: See TracChangeset
for help on using the changeset viewer.