changeset 1463:5b9c566ab513

2009-04-03 Lillian Angel <langel@redhat.com> * patches/icedtea-lcms.patch: Updated. Re-added _cmsModifyTag data patch, which is upstream in OpenJDK6, but is not available in the upstream lcms 1.18 sources.
author Lillian Angel <langel@redhat.com>
date Fri, 03 Apr 2009 13:49:06 -0400
parents 300bff72109a
children 976903c2e02e
files ChangeLog patches/icedtea-lcms.patch
diffstat 2 files changed, 106 insertions(+), 260 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Apr 02 14:55:59 2009 -0400
+++ b/ChangeLog	Fri Apr 03 13:49:06 2009 -0400
@@ -1,3 +1,9 @@
+2009-04-03  Lillian Angel  <langel@redhat.com>
+
+	* patches/icedtea-lcms.patch: Updated. Re-added _cmsModifyTag data
+	patch, which is upstream in OpenJDK6, but is not available in the
+	upstream lcms 1.18 sources.
+
 2009-04-02 Deepak Bhole <dbhole@redhat.com>
 
 	* IcedTeaPlugin.cc: Incremented timeout to 3 minutes. Added functions to
--- a/patches/icedtea-lcms.patch	Thu Apr 02 14:55:59 2009 -0400
+++ b/patches/icedtea-lcms.patch	Fri Apr 03 13:49:06 2009 -0400
@@ -1,6 +1,6 @@
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam02.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam02.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam02.c	2008-11-25 04:06:03.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam02.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam02.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -81,7 +81,7 @@
  
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam97.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam97.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam97.c	2008-11-25 04:06:03.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam97.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscam97.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -120,7 +120,7 @@
      MAT3eval(&lpMod -> RGB_subw, &lpMod -> MlamRigg, &tmp);
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmscgats.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscgats.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmscgats.c	2008-11-25 04:06:03.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscgats.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscgats.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -1564,7 +1564,7 @@
      LPIT8 it8 = (LPIT8) hIT8;
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmscnvrt.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscnvrt.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmscnvrt.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscnvrt.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmscnvrt.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -1592,7 +1592,7 @@
 +      
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmserr.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmserr.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmserr.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmserr.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmserr.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -1624,7 +1624,7 @@
                                            MB_OK|MB_ICONSTOP|MB_TASKMODAL);
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgamma.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgamma.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgamma.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgamma.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgamma.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -1771,7 +1771,7 @@
      if (cmsIsLinear(Table, nEntries)) return FALSE; // Nothing to do
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgmt.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgmt.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgmt.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgmt.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsgmt.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -1875,7 +1875,7 @@
  
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsintrp.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsintrp.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsintrp.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsintrp.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsintrp.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -1914,7 +1914,7 @@
  
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c	2009-04-03 13:43:04.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -1993,7 +1993,7 @@
  {
      FILEMEM* ResData = (FILEMEM*) Icc ->stream;
  
-@@ -147,19 +163,18 @@
+@@ -147,10 +163,10 @@
  }
  
  
@@ -2006,32 +2006,19 @@
  {
          FILEMEM* ResData = (FILEMEM*) Icc ->stream;
  
-        if (size == 0) return TRUE;
- 
-        if (ResData != NULL)
--           CopyMemory(ResData ->Block + ResData ->Pointer, Ptr, size);
-+           CopyMemory(ResData ->Block + Icc ->UsedSpace, Ptr, size);
- 
--       ResData->Pointer += size;
-        Icc->UsedSpace += size;
- 
-        return TRUE;
-@@ -167,27 +182,15 @@
+@@ -167,7 +183,7 @@
  
  
  static
 -BOOL MemoryGrow(struct _lcms_iccprofile_struct* Icc, size_t size)
--{
--  FILEMEM* ResData = (FILEMEM*) Icc->stream;
--  ResData->Size += size;
--  ResData->Block = realloc(ResData->Block, ResData->Size);
--  if (!ResData->Block)
--    return FALSE;
--  return TRUE;
--}
--
--
--static
++LCMSBOOL MemoryGrow(struct _lcms_iccprofile_struct* Icc, size_t size)
+ {
+   FILEMEM* ResData = (FILEMEM*) Icc->stream;
+   ResData->Size += size;
+@@ -179,15 +195,15 @@
+ 
+ 
+ static
 -BOOL MemoryClose(struct _lcms_iccprofile_struct* Icc)
 +LCMSBOOL MemoryClose(struct _lcms_iccprofile_struct* Icc)
  {
@@ -2047,7 +2034,7 @@
      return 0;
  }
  
-@@ -205,7 +208,7 @@
+@@ -205,7 +221,7 @@
  {
      size_t nReaded = fread(buffer, size, count, (FILE*) Icc->stream);
      if (nReaded != count) {
@@ -2056,7 +2043,7 @@
              return 0;
      }
  
-@@ -214,7 +217,7 @@
+@@ -214,7 +230,7 @@
  
  
  static
@@ -2065,7 +2052,7 @@
  {
      if (fseek((FILE*) Icc ->stream, (long) offset, SEEK_SET) != 0) {
  
-@@ -236,7 +239,7 @@
+@@ -236,7 +252,7 @@
  
  
  static
@@ -2074,23 +2061,24 @@
  {
         if (size == 0) return TRUE;
  
-@@ -252,14 +255,7 @@
+@@ -252,14 +268,14 @@
  
  
  static
 -BOOL FileGrow(struct _lcms_iccprofile_struct* Icc, size_t size)
--{
--  return TRUE;
--}
--
--
--static
++LCMSBOOL FileGrow(struct _lcms_iccprofile_struct* Icc, size_t size)
+ {
+   return TRUE;
+ }
+ 
+ 
+ static
 -BOOL FileClose(struct _lcms_iccprofile_struct* Icc)
 +LCMSBOOL FileClose(struct _lcms_iccprofile_struct* Icc)
  {
      return fclose((FILE*) Icc ->stream);
  }
-@@ -272,7 +268,7 @@
+@@ -272,7 +288,7 @@
  cmsHPROFILE _cmsCreateProfilePlaceholder(void)
  {
  
@@ -2099,7 +2087,7 @@
      if (Icc == NULL) return NULL;
  
      // Empty values
-@@ -310,7 +306,7 @@
+@@ -310,7 +326,7 @@
  // Search for a specific tag in tag dictionary
  // Returns position or -1 if tag not found
  
@@ -2108,7 +2096,7 @@
  {
         icInt32Number i;
  
-@@ -331,7 +327,7 @@
+@@ -331,7 +347,7 @@
  
  // Check existance
  
@@ -2117,7 +2105,7 @@
  {
         LPLCMSICCPROFILE  Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
         return _cmsSearchTag(Icc, sig, FALSE) >= 0;
-@@ -350,7 +346,7 @@
+@@ -350,7 +366,7 @@
  
      if (i >=0) {
  
@@ -2126,7 +2114,7 @@
      }
      else  {
  
-@@ -361,11 +357,14 @@
+@@ -361,11 +377,14 @@
  
              cmsSignalError(LCMS_ERRC_ABORTED, "Too many tags (%d)", MAX_TABLE_TAG);
              Icc ->TagCount = MAX_TABLE_TAG-1;
@@ -2142,7 +2130,7 @@
      CopyMemory(Ptr, Init, size);
  
      Icc ->TagNames[i] = sig;
-@@ -396,13 +395,14 @@
+@@ -396,6 +415,8 @@
      if (NewIcc == NULL) return NULL;
  
      strncpy(NewIcc -> PhysicalFile, FileName, MAX_PATH-1);
@@ -2151,24 +2139,7 @@
      NewIcc ->stream = ICCfile;
  
      NewIcc ->Read  = FileRead;
-     NewIcc ->Seek  = FileSeek;
-     NewIcc ->Tell  = FileTell;
-     NewIcc ->Close = FileClose;
--    NewIcc ->Grow  = FileGrow;
-     NewIcc ->Write = NULL;
- 
-     NewIcc ->IsWrite = FALSE;
-@@ -440,8 +440,7 @@
-     NewIcc ->Seek  = MemorySeek;
-     NewIcc ->Tell  = MemoryTell;
-     NewIcc ->Close = MemoryClose;
--    NewIcc ->Grow  = MemoryGrow;
--    NewIcc ->Write = MemoryWrite;
-+    NewIcc ->Write = NULL;
- 
-     NewIcc ->IsWrite = FALSE;
- 
-@@ -498,7 +497,7 @@
+@@ -498,7 +519,7 @@
  
  
  
@@ -2177,7 +2148,7 @@
  {
       LPLCMSICCPROFILE    Icc = (LPLCMSICCPROFILE) hProfile;
       *Dest = Icc -> MediaWhitePoint;
-@@ -506,14 +505,14 @@
+@@ -506,14 +527,14 @@
  }
  
  
@@ -2194,7 +2165,7 @@
  {
         LPLCMSICCPROFILE  Icc = (LPLCMSICCPROFILE) hProfile;
         *Dest = Icc -> Illuminant;
-@@ -571,7 +570,7 @@
+@@ -571,7 +592,7 @@
  }
  
  
@@ -2203,7 +2174,7 @@
  {
      LPLCMSICCPROFILE  Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
      CopyMemory(Dest, &Icc ->Created, sizeof(struct tm));
-@@ -660,7 +659,7 @@
+@@ -660,7 +681,7 @@
  
  // This is tricky, since LUT structs does have pointers
  
@@ -2212,7 +2183,7 @@
  {
         LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
         LPLUT Orig, Stored;
-@@ -688,7 +687,7 @@
+@@ -688,7 +709,7 @@
  }
  
  
@@ -2221,7 +2192,7 @@
  {
         LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
  
-@@ -697,7 +696,7 @@
+@@ -697,7 +718,7 @@
  }
  
  
@@ -2230,7 +2201,7 @@
  {
         LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
  
-@@ -705,7 +704,7 @@
+@@ -705,7 +726,7 @@
         return TRUE;
  }
  
@@ -2239,7 +2210,7 @@
  {
      LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
  
-@@ -714,7 +713,7 @@
+@@ -714,7 +735,7 @@
  }
  
  
@@ -2248,7 +2219,7 @@
  {
      LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
  
-@@ -723,7 +722,7 @@
+@@ -723,7 +744,7 @@
  }
  
  
@@ -2257,7 +2228,7 @@
  {
      LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
  
-@@ -733,28 +732,40 @@
+@@ -733,28 +754,40 @@
  }
  
  
@@ -2306,7 +2277,7 @@
 +
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c	2009-04-03 13:43:04.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -2874,10 +2845,10 @@
 +        if (Curves[i] == NULL) goto Error;
          SkipAlignment(Icc);
 +    }
-+
+ 
 +    // March-26'08: some V4 profiles may have different sampling
 +    // rates, in this case resample all curves to maximum
- 
++
 +    for (i=1; i < nCurves; i++) {
 +        if (Curves[i]->nEntries != Curves[0]->nEntries) {
 +            ResampleCurves(Curves, nCurves);
@@ -4139,149 +4110,22 @@
  
      // update BytesSaved so caller knows how many bytes put into stream
      *BytesNeeded = Icc ->UsedSpace;
-@@ -3662,139 +3764,3 @@
+@@ -3662,10 +3764,10 @@
      return FALSE;
  }
  
 -BOOL LCMSEXPORT _cmsModifyTagData(cmsHPROFILE hProfile, icTagSignature sig,
--				  void *data, size_t size)
--{
++LCMSBOOL LCMSEXPORT _cmsModifyTagData(cmsHPROFILE hProfile, icTagSignature sig,
+ 				  void *data, size_t size)
+ {
 -  BOOL isNew;
--  int i, idx, delta, count;
--  LPBYTE padChars[3] = {0, 0, 0};
--  LPBYTE beforeBuf, afterBuf, ptr;
--  size_t beforeSize, afterSize;
--  icUInt32Number profileSize, temp;
--  LPLCMSICCPROFILE Icc = (LPLCMSICCPROFILE) (LPSTR) hProfile;
--
--  isNew = FALSE;
--  idx = _cmsSearchTag(Icc, sig, FALSE);
--  if (idx < 0)
--    {
--      isNew = TRUE;
--      idx = Icc->TagCount++;
--      if (Icc->TagCount >= MAX_TABLE_TAG)
--	{
--	  fprintf(stderr, "Too many tags (%d)\n", Icc->TagCount);
--	  Icc->TagCount = MAX_TABLE_TAG-1;
--	  return FALSE;
--	}
--    }
--
--  /* Read in size from header */
--  Icc->Seek(Icc, 0);
--  Icc->Read(&profileSize, sizeof(icUInt32Number), 1, Icc);
--  AdjustEndianess32((LPBYTE) &profileSize);
--
--  /* Compute the change in profile size */
--  if (isNew)
--    delta = sizeof(icTag) + ALIGNLONG(size);
--  else
--    delta = ALIGNLONG(size) - ALIGNLONG(Icc->TagSizes[idx]);
--
--  /* Add tag to internal structures */
--  ptr = malloc(size);
--  CopyMemory(ptr, data, size);
--  Icc->TagSizes[idx] = size;
--  Icc->TagNames[idx] = sig;
--  if (Icc->TagPtrs[idx])
--    free(Icc->TagPtrs[idx]);
--  Icc->TagPtrs[idx] = ptr;
--  if (isNew)
--    Icc->TagOffsets[idx] = profileSize;
--
--  /* Compute size of tag data before/after the modified tag */
--  beforeSize = Icc->TagOffsets[idx] - Icc->TagOffsets[0];
--  if (Icc->TagCount == (idx + 1))
--    afterSize = 0;
--  else
--    afterSize = profileSize - Icc->TagOffsets[idx+1];
--
--  /* Make copies of the data before/after the modified tag */
--  if (beforeSize > 0)
--    {
--      beforeBuf = malloc(beforeSize);
--      Icc->Seek(Icc, Icc->TagOffsets[0]);
--      Icc->Read(beforeBuf, beforeSize, 1, Icc);
--    }
--  
--  if (afterSize > 0)
--    {
--      afterBuf = malloc(afterSize);
--      Icc->Seek(Icc, Icc->TagOffsets[idx+1]);
--      Icc->Read(afterBuf, afterSize, 1, Icc);
--    }
--
--  /* Update the profile size in the header */
--  profileSize += delta;
--  Icc->Seek(Icc, 0);
--  temp = TransportValue32(profileSize);
--  Icc->Write(Icc, sizeof(icUInt32Number), &temp);
--
--  Icc->Grow(Icc, delta);
--
--  /* Adjust tag offsets: if the tag is new, we must account
--     for the new tag table entry; otherwise, only those tags after
--     the modified tag are changed (by delta) */
--  if (isNew)
--    {
--      for (i = 0; i < Icc->TagCount; ++i)
--	Icc->TagOffsets[i] += sizeof(icTag);
--    }
--  else
--    {
--      for (i = idx+1; i < Icc->TagCount; ++i)
--	Icc->TagOffsets[i] += delta;
--    }
--
--  /* Write out a new tag table */
--  count = 0;
--  for (i = 0; i < Icc->TagCount; ++i)
--    {
--      if (Icc->TagNames[i] != 0)
--	++count;
--    }
--  Icc->Seek(Icc, sizeof(icHeader));
--  temp = TransportValue32(count);
--  Icc->Write(Icc, sizeof(icUInt32Number), &temp);
--
--  for (i = 0; i < Icc->TagCount; ++i)
--    {
--      if (Icc->TagNames[i] != 0)
--	{
--	  icTag tag;
--	  tag.sig = TransportValue32(Icc->TagNames[i]);
--	  tag.offset = TransportValue32((icInt32Number) Icc->TagOffsets[i]);
--	  tag.size = TransportValue32((icInt32Number) Icc->TagSizes[i]);
--	  Icc->Write(Icc, sizeof(icTag), &tag);
--	}
--    }
--
--  /* Write unchanged data before the modified tag */
--  if (beforeSize > 0)
--    {
--      Icc->Write(Icc, beforeSize, beforeBuf);
--      free(beforeBuf);
--    }
--
--  /* Write modified tag data */
--  Icc->Write(Icc, size, data);
--  if (size % 4)
--    Icc->Write(Icc, 4 - (size % 4), padChars);
--
--  /* Write unchanged data after the modified tag */
--  if (afterSize > 0)
--    {
--      Icc->Write(Icc, afterSize, afterBuf);
--      free(afterBuf);
--    }
--
--  return TRUE;
--}
--
++  LCMSBOOL isNew;
+   int i, idx, delta, count;
+   LPBYTE padChars[3] = {0, 0, 0};
+   LPBYTE beforeBuf, afterBuf, ptr;
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmslut.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmslut.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmslut.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmslut.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmslut.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -4439,7 +4283,7 @@
             }
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmatsh.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmatsh.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmatsh.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmatsh.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmatsh.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -4502,7 +4346,7 @@
  
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmtrx.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmtrx.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmtrx.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmtrx.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmtrx.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -4566,7 +4410,7 @@
  
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsnamed.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsnamed.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsnamed.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsnamed.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsnamed.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -4627,7 +4471,7 @@
  
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmspack.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmspack.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmspack.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmspack.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmspack.c	2009-04-03 13:42:46.000000000 -0400
 @@ -28,7 +28,7 @@
  // file:
  //
@@ -4811,7 +4655,7 @@
                       default:;
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmspcs.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmspcs.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmspcs.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmspcs.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmspcs.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -4823,7 +4667,7 @@
  // a copy of this software and associated documentation files (the "Software"),
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsps2.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsps2.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsps2.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsps2.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsps2.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -5187,7 +5031,7 @@
      return dwBytesUsed;
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmssamp.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmssamp.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmssamp.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmssamp.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmssamp.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -5299,7 +5143,7 @@
         WORD *WhitePointIn, *WhitePointOut, *BlackPointIn, *BlackPointOut;
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsvirt.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsvirt.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsvirt.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsvirt.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsvirt.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -5454,7 +5298,7 @@
         Lut -> OutputChan = 1;
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmswtpnt.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmswtpnt.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmswtpnt.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmswtpnt.c	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmswtpnt.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -5611,7 +5455,7 @@
              (cmsGetColorSpace(hProfile) == icSigCmykData))
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	2009-03-26 15:18:47.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	2009-04-03 13:42:46.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -5846,7 +5690,7 @@
                              _cmsFixWhiteMisalignment(p);
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/icc34.h openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/icc34.h
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/icc34.h	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/icc34.h	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/icc34.h	2009-04-03 13:42:46.000000000 -0400
 @@ -1,5 +1,8 @@
 +/* Header file guard bands */
 +#ifndef ICC_H
@@ -5912,8 +5756,8 @@
  typedef uint32_t  icUInt32Number;
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c	2008-11-25 04:06:03.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c	2009-03-26 15:16:19.000000000 -0400
-@@ -356,12 +356,18 @@
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c	2009-04-03 13:44:42.000000000 -0400
+@@ -356,6 +356,12 @@
        fprintf(stderr, "setTagData on icSigHead not permitted");
        return;
      }
@@ -5926,16 +5770,9 @@
  
      sProf.j = id;
      profile = (cmsHPROFILE) sProf.pf;
-     dataArray = (*env)->GetByteArrayElements(env, data, 0);    
-     tagSize =(*env)->GetArrayLength(env, data);
--    _cmsModifyTagData(profile, (icTagSignature) tagSig, dataArray, tagSize);
-+    _cmsInitTag(profile, (icTagSignature) tagSig, tagSize, dataArray);
-     (*env)->ReleaseByteArrayElements(env, data, dataArray, 0);
- }
- 
 diff -ruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/lcms.h openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/lcms.h
 --- openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/lcms.h	2008-11-25 04:06:04.000000000 -0500
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/lcms.h	2009-03-26 15:13:30.000000000 -0400
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/lcms.h	2009-04-03 13:43:04.000000000 -0400
 @@ -29,7 +29,7 @@
  //
  //
@@ -6305,7 +6142,7 @@
  
  // Converts a transform to a devicelink profile
  LCMSAPI cmsHPROFILE LCMSEXPORT cmsTransform2DeviceLink(cmsHTRANSFORM hTransform, DWORD dwFlags);
-@@ -1240,12 +1218,11 @@
+@@ -1240,12 +1218,14 @@
  
  
  // Save profile
@@ -6315,13 +6152,15 @@
 +LCMSAPI LCMSBOOL LCMSEXPORT _cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr, 
                                                                  size_t* BytesNeeded);
  
--// Modify data for a tag in a profile
++
++
+ // Modify data for a tag in a profile
 -LCMSAPI BOOL LCMSEXPORT _cmsModifyTagData(cmsHPROFILE hProfile, icTagSignature sig, void *data, size_t size);
-+
++LCMSAPI LCMSBOOL LCMSEXPORT _cmsModifyTagData(cmsHPROFILE hProfile, icTagSignature sig, void *data, size_t size);
  
  // PostScript ColorRenderingDictionary and ColorSpaceArray
  
-@@ -1326,35 +1303,37 @@
+@@ -1326,35 +1306,37 @@
  // Persistence
  LCMSAPI LCMSHANDLE      LCMSEXPORT cmsIT8LoadFromFile(const char* cFileName);
  LCMSAPI LCMSHANDLE      LCMSEXPORT cmsIT8LoadFromMem(void *Ptr, size_t len);
@@ -6371,7 +6210,7 @@
                                                  double Val);
  
  LCMSAPI const char*     LCMSEXPORT cmsIT8GetData(LCMSHANDLE IT8, const char* cPatch, const char* cSample);
-@@ -1362,25 +1341,28 @@
+@@ -1362,25 +1344,28 @@
  
  LCMSAPI double          LCMSEXPORT cmsIT8GetDataDbl(LCMSHANDLE IT8, const char* cPatch, const char* cSample);
  
@@ -6403,7 +6242,7 @@
  // Formatter for double
  LCMSAPI void            LCMSEXPORT cmsIT8DefineDblFormat(LCMSHANDLE IT8, const char* Formatter);
  
-@@ -1406,15 +1388,16 @@
+@@ -1406,15 +1391,16 @@
  
  // Profiling Extensions --- Would be removed from API in future revisions
  
@@ -6429,7 +6268,7 @@
  
  // --------------------------------------------------------------------------------------------------- Inline functions
  
-@@ -1456,6 +1439,34 @@
+@@ -1456,6 +1442,34 @@
         return (WORD) in;
  }
  
@@ -6464,7 +6303,7 @@
  // ------------------------------------------------------------------------------------------- end of inline functions
  
  // Signal error from inside lcms code
-@@ -1542,8 +1553,8 @@
+@@ -1542,8 +1556,8 @@
  void   cdecl VEC3perK(LPVEC3 r, LPVEC3 v, double d);
  void   cdecl VEC3minus(LPVEC3 r, LPVEC3 a, LPVEC3 b);
  void   cdecl VEC3perComp(LPVEC3 r, LPVEC3 a, LPVEC3 b);
@@ -6475,7 +6314,7 @@
  void   cdecl VEC3scaleAndCut(LPWVEC3 r, LPVEC3 v, double d);
  void   cdecl VEC3cross(LPVEC3 r, LPVEC3 u, LPVEC3 v);
  void   cdecl VEC3saturate(LPVEC3 v);
-@@ -1554,13 +1565,13 @@
+@@ -1554,13 +1568,13 @@
  void   cdecl MAT3per(LPMAT3 r, LPMAT3 a, LPMAT3 b);
  void   cdecl MAT3perK(LPMAT3 r, LPMAT3 v, double d);
  int    cdecl MAT3inverse(LPMAT3 a, LPMAT3 b);
@@ -6491,7 +6330,7 @@
  void   cdecl MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d);
  
  // Is a table linear?
-@@ -1609,7 +1620,7 @@
+@@ -1609,7 +1623,7 @@
  void    cdecl cmsCalcL16Params(int nSamples, LPL16PARAMS p);
  void    cdecl cmsCalcCLUT16Params(int nSamples, int InputChan, int OutputChan, LPL16PARAMS p);
  void    cdecl cmsCalcCLUT16ParamsEx(int nSamples, int InputChan, int OutputChan,
@@ -6500,7 +6339,7 @@
  
  WORD    cdecl cmsLinearInterpLUT16(WORD Value, WORD LutTable[], LPL16PARAMS p);
  Fixed32 cdecl cmsLinearInterpFixed(WORD Value1, WORD LutTable[], LPL16PARAMS p);
-@@ -1693,7 +1704,7 @@
+@@ -1693,7 +1707,7 @@
  
                 // Gray axes fixup. Only on v2 8-bit Lab LUT
  
@@ -6509,7 +6348,7 @@
  
  
                             // Parameters used for curve creation
-@@ -1704,7 +1715,7 @@
+@@ -1704,7 +1718,7 @@
                 }; // LUT, FAR* LPLUT;
  
  
@@ -6518,7 +6357,7 @@
  
  
  // CRC of gamma tables
-@@ -1722,7 +1733,7 @@
+@@ -1722,7 +1736,7 @@
  
  void           cdecl cmsEndpointsOfSampledCurve(LPSAMPLEDCURVE p, double* Min, double* Max);
  void           cdecl cmsClampSampledCurve(LPSAMPLEDCURVE p, double Min, double Max);
@@ -6527,7 +6366,7 @@
  void           cdecl cmsRescaleSampledCurve(LPSAMPLEDCURVE p, double Min, double Max, int nPoints);
  
  LPSAMPLEDCURVE cdecl cmsJoinSampledCurves(LPSAMPLEDCURVE X, LPSAMPLEDCURVE Y, int nResultingPoints);
-@@ -1756,7 +1767,7 @@
+@@ -1756,7 +1770,7 @@
  void        cdecl cmsFreeMatShaper(LPMATSHAPER MatShaper);
  void        cdecl cmsEvalMatShaper(LPMATSHAPER MatShaper, WORD In[], WORD Out[]);
  
@@ -6536,7 +6375,7 @@
  
  LPMATSHAPER  cdecl cmsBuildInputMatrixShaper(cmsHPROFILE InputProfile);
  LPMATSHAPER  cdecl cmsBuildOutputMatrixShaper(cmsHPROFILE OutputProfile);
-@@ -1764,11 +1775,11 @@
+@@ -1764,11 +1778,11 @@
  
  
  // White Point & Primary chromas handling
@@ -6552,7 +6391,7 @@
  
  // Inter-PCS conversion routines. They assume D50 as white point.
  void cdecl cmsXYZ2LabEncoded(WORD XYZ[3], WORD Lab[3]);
-@@ -1783,7 +1794,7 @@
+@@ -1783,7 +1797,7 @@
  LPcmsNAMEDCOLORLIST  cdecl cmsAllocNamedColorList(int n);
  int                  cdecl cmsReadICCnamedColorList(cmsHTRANSFORM xform, cmsHPROFILE hProfile, icTagSignature sig);
  void                 cdecl cmsFreeNamedColorList(LPcmsNAMEDCOLORLIST List);
@@ -6561,7 +6400,7 @@
  
  
  // I/O
-@@ -1827,8 +1838,8 @@
+@@ -1827,8 +1841,8 @@
  
                 char                    PhysicalFile[MAX_PATH];
  
@@ -6572,7 +6411,7 @@
  
                 struct tm               Created;
  
-@@ -1836,14 +1847,13 @@
+@@ -1836,14 +1850,13 @@
  
                 size_t (* Read)(void *buffer, size_t size, size_t count, struct _lcms_iccprofile_struct* Icc);
  
@@ -6582,7 +6421,8 @@
 +               LCMSBOOL (* Close)(struct _lcms_iccprofile_struct* Icc);
                 size_t (* Tell)(struct _lcms_iccprofile_struct* Icc);
 -               BOOL   (* Grow)(struct _lcms_iccprofile_struct* Icc, size_t amount);
- 
+-
++               LCMSBOOL   (* Grow)(struct _lcms_iccprofile_struct* Icc, size_t amount);
                 // Writting
  
 -               BOOL   (* Write)(struct _lcms_iccprofile_struct* Icc, size_t size, LPVOID Ptr);
@@ -6590,7 +6430,7 @@
  
                 size_t UsedSpace;
  
-@@ -1855,7 +1865,7 @@
+@@ -1855,7 +1868,7 @@
  cmsHPROFILE cdecl _cmsCreateProfilePlaceholder(void);
  
  // Search into tag dictionary
@@ -6599,7 +6439,7 @@
  
  // Search for a particular tag, replace if found or add new one else
  LPVOID _cmsInitTag(LPLCMSICCPROFILE Icc, icTagSignature sig, size_t size, const void* Init);
-@@ -1871,6 +1881,7 @@
+@@ -1871,6 +1884,7 @@
  
  // These macros unpack format specifiers into integers
  
@@ -6607,7 +6447,7 @@
  #define T_COLORSPACE(s)       (((s)>>16)&31)
  #define T_SWAPFIRST(s)        (((s)>>14)&1)
  #define T_FLAVOR(s)           (((s)>>13)&1)
-@@ -1967,7 +1978,7 @@
+@@ -1967,7 +1981,7 @@
  
                      // Flag for transform involving v4 profiles
  
@@ -6616,7 +6456,7 @@
  
  
                      // 1-pixel cache
-@@ -2014,7 +2025,7 @@
+@@ -2014,7 +2028,7 @@
  
  // Clamping & Gamut handling
  
@@ -6625,7 +6465,7 @@
                              WORD **White, WORD **Black, int *nOutputs);
  
  WORD * cdecl _cmsWhiteBySpace(icColorSpaceSignature Space);
-@@ -2043,7 +2054,7 @@
+@@ -2043,7 +2057,7 @@
  LPLUT cdecl _cmsPrecalculateGamutCheck(cmsHTRANSFORM h);
  
  // Hot fixes bad profiles
@@ -6634,7 +6474,7 @@
  
  // Marks LUT as 8 bit on input
  LPLUT cdecl _cmsBlessLUT8(LPLUT Lut);
-@@ -2061,6 +2072,10 @@
+@@ -2061,6 +2075,10 @@
  // Build a tone curve for K->K' if possible (only works on CMYK)
  LPGAMMATABLE _cmsBuildKToneCurve(cmsHTRANSFORM hCMYK2CMYK, int nPoints);