diff options
| author | Patrick Walton <[email protected]> | 2011-04-27 11:59:22 -0700 |
|---|---|---|
| committer | Patrick Walton <[email protected]> | 2011-04-27 11:59:22 -0700 |
| commit | fef8314c2e018d2e35c8bd91d3181de038e44de2 (patch) | |
| tree | 3ef92bb9b095b8dcfab6fe97e478f65529fbb002 /src/lib | |
| parent | stdlib: Fix a crazy underflow bug in _uint.parse_buf. Oops. (diff) | |
| download | rust-fef8314c2e018d2e35c8bd91d3181de038e44de2.tar.xz rust-fef8314c2e018d2e35c8bd91d3181de038e44de2.zip | |
stdlib: Real fix for _uint.parse_buf().
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/_uint.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lib/_uint.rs b/src/lib/_uint.rs index ce01dabf..97108c90 100644 --- a/src/lib/_uint.rs +++ b/src/lib/_uint.rs @@ -34,6 +34,11 @@ fn next_power_of_two(uint n) -> uint { } fn parse_buf(vec[u8] buf, uint radix) -> uint { + if (_vec.len[u8](buf) == 0u) { + log_err "parse_buf(): buf is empty"; + fail; + } + auto i = _vec.len[u8](buf) - 1u; auto power = 1u; auto n = 0u; @@ -41,7 +46,10 @@ fn parse_buf(vec[u8] buf, uint radix) -> uint { n += (((buf.(i)) - ('0' as u8)) as uint) * power; power *= radix; if (i == 0u) { ret n; } + i -= 1u; } + + fail; } fn to_str(uint num, uint radix) -> str |