From f167b1c037e35205c64116d8ec4e55401ae8af18 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Mon, 8 Dec 2003 20:47:12 +0100 Subject: [PATCH] unwind-pe.h (read_uleb128): Fix handling of large values * unwind-pe.h (read_uleb128): Fix handling of large values (read_sleb128): Fix handling of large values From-SVN: r74429 --- gcc/ChangeLog | 5 +++++ gcc/unwind-pe.h | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3cc34b5..6ec2cdd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-12-08 Jan Hubicka + + * unwind-pe.h (read_uleb128): Fix handling of large values + (read_sleb128): Fix handling of large values + 2003-12-08 Andrew Pinski PR middle-end/10060 diff --git a/gcc/unwind-pe.h b/gcc/unwind-pe.h index e6aebd7..4bf2cfd 100644 --- a/gcc/unwind-pe.h +++ b/gcc/unwind-pe.h @@ -137,7 +137,7 @@ read_uleb128 (const unsigned char *p, _Unwind_Word *val) do { byte = *p++; - result |= (byte & 0x7f) << shift; + result |= ((_Unwind_Word)byte & 0x7f) << shift; shift += 7; } while (byte & 0x80); @@ -159,14 +159,14 @@ read_sleb128 (const unsigned char *p, _Unwind_Sword *val) do { byte = *p++; - result |= (byte & 0x7f) << shift; + result |= ((_Unwind_Word)byte & 0x7f) << shift; shift += 7; } while (byte & 0x80); /* Sign-extend a negative value. */ if (shift < 8 * sizeof(result) && (byte & 0x40) != 0) - result |= -(1L << shift); + result |= -(((_Unwind_Word)1L) << shift); *val = (_Unwind_Sword) result; return p; -- 2.7.4