From e0241be09419849ed88c68ea2a387a46bde2b77f Mon Sep 17 00:00:00 2001
From: Harvey Harrison <harvey.harrison@gmail.com>
Date: Fri, 11 Apr 2014 10:58:09 -0700
Subject: jogl: avoid bugs with sign-extension in JPEGDecoder

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
---
 src/jogl/classes/jogamp/opengl/util/jpeg/JPEGDecoder.java | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

(limited to 'src/jogl/classes/jogamp/opengl/util/jpeg/JPEGDecoder.java')

diff --git a/src/jogl/classes/jogamp/opengl/util/jpeg/JPEGDecoder.java b/src/jogl/classes/jogamp/opengl/util/jpeg/JPEGDecoder.java
index 45087ea2c..078965301 100644
--- a/src/jogl/classes/jogamp/opengl/util/jpeg/JPEGDecoder.java
+++ b/src/jogl/classes/jogamp/opengl/util/jpeg/JPEGDecoder.java
@@ -117,8 +117,8 @@ public class JPEGDecoder {
         private JFIF(final byte data[]) {
             version = new VersionNumber(data[5], data[6], 0);
             densityUnits = data[7];
-            xDensity = (data[8] << 8) | data[9];
-            yDensity = (data[10] << 8) | data[11];
+            xDensity = ((data[ 8] << 8) & 0xff00) | (data[ 9] & 0xff);
+            yDensity = ((data[10] << 8) & 0xff00) | (data[11] & 0xff);
             thumbWidth = data[12];
             thumbHeight = data[13];
             if( 0 < thumbWidth && 0 < thumbHeight ) {
@@ -155,8 +155,8 @@ public class JPEGDecoder {
 
         private Adobe(final byte[] data) {
             version = data[6];
-            flags0 = (short) ( (data[7] << 8) | data[8]  ) ;
-            flags1 = (short) ( (data[9] << 8) | data[10] ) ;
+            flags0 = (short)(((data[7] << 8) & 0xff00) | (data[ 8] & 0xff));
+            flags1 = (short)(((data[9] << 8) & 0xff00) | (data[10] & 0xff));
             colorCode = data[11];
             switch( colorCode ) {
                 case 2: colorSpace = ColorSpace.YCCK; break;
-- 
cgit v1.2.3