summaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/class.c2
-rw-r--r--gcc/java/javaop.h2
3 files changed, 8 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 3b8a95a6baf..5ab19210cb7 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR other/59545
+ * class.c (hashUtf8String): Compute hash in unsigned type.
+ * javaop.h (WORD_TO_INT): Avoid signed integer overflow.
+
2013-11-22 Andrew MacLeod <amacleod@redhat.com>
* java-gimplify.c: Add required include files from gimple.h.
diff --git a/gcc/java/class.c b/gcc/java/class.c
index 532c9c1d94f..e5d2e6d8e8c 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -920,7 +920,7 @@ hashUtf8String (const char *str, int len)
{
const unsigned char* ptr = (const unsigned char*) str;
const unsigned char *limit = ptr + len;
- int32 hash = 0;
+ uint32 hash = 0;
for (; ptr < limit;)
{
int ch = UTF8_GET (ptr, limit);
diff --git a/gcc/java/javaop.h b/gcc/java/javaop.h
index 574c10c7992..bffa857cc3e 100644
--- a/gcc/java/javaop.h
+++ b/gcc/java/javaop.h
@@ -154,7 +154,7 @@ WORD_TO_INT(jword w)
{
jint n = w & 0xffffffff; /* Mask lower 32 bits. */
n ^= (jint)1 << 31;
- n -= (jint)1 << 31; /* Sign extend lower 32 bits to upper. */
+ n -= (uint32)1 << 31; /* Sign extend lower 32 bits to upper. */
return n;
}