--- a/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmatsh.c Mon Mar 23 10:40:54 2009 -0700
+++ b/jdk/src/share/native/sun/java2d/cmm/lcms/cmsmatsh.c Tue Mar 24 09:14:02 2009 -0700
@@ -29,7 +29,7 @@
//
//
// Little cms
-// Copyright (C) 1998-2006 Marti Maria
+// Copyright (C) 1998-2007 Marti Maria
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the "Software"),
@@ -62,6 +62,7 @@
// data yet in fixed point, so no additional process is required.
// Then, we obtain data on 15.16, so we need to shift >> by 1 to
// obtain 1.15 PCS format.
+
// On OUTPUT profiles, things are inverse, we must first expand 1 bit
// by shifting left, and then convert result between 0 and 1.000 to
// RGB, so FromFixedDomain() must be called before pass values to
@@ -71,6 +72,7 @@
// input is encoded from 0 to 0xffff, we must first use the shaper and
// then the matrix, an additional FromFixedDomain() must be used to
// accomodate output values.
+
// For a sake of simplicity, I will handle this three behaviours
// with different routines, so the flags MATSHAPER_INPUT and MATSHAPER_OUTPUT
// can be conbined to signal smelted matrix-shapers
@@ -89,7 +91,7 @@
{
LPWORD PtrW;
- PtrW = (LPWORD) malloc(sizeof(WORD) * p16 -> nSamples);
+ PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * p16 -> nSamples);
if (PtrW == NULL) return -1; // Signal error
@@ -119,7 +121,7 @@
LPMATSHAPER NewMatShaper;
int rc;
- NewMatShaper = (LPMATSHAPER) malloc(sizeof(MATSHAPER));
+ NewMatShaper = (LPMATSHAPER) _cmsMalloc(sizeof(MATSHAPER));
if (NewMatShaper)
ZeroMemory(NewMatShaper, sizeof(MATSHAPER));
@@ -171,7 +173,13 @@
LPMATSHAPER NewMatShaper;
int i, AllLinear;
- NewMatShaper = (LPMATSHAPER) malloc(sizeof(MATSHAPER));
+ if (Matrix == NULL) return NULL;
+ for (i=0; i < 3; i++) {
+
+ if (Tables[i] == NULL) return NULL;
+ }
+
+ NewMatShaper = (LPMATSHAPER) _cmsMalloc(sizeof(MATSHAPER));
if (NewMatShaper)
ZeroMemory(NewMatShaper, sizeof(MATSHAPER));
@@ -187,17 +195,16 @@
NewMatShaper -> dwFlags |= MATSHAPER_HASMATRIX;
// Now, on the table characteristics
-
cmsCalcL16Params(Tables[0] -> nEntries, &NewMatShaper -> p16);
// Copy tables
AllLinear = 0;
- for (i=0; i < 3; i++)
- {
+ for (i=0; i < 3; i++) {
+
LPWORD PtrW;
- PtrW = (LPWORD) malloc(sizeof(WORD) * NewMatShaper -> p16.nSamples);
+ PtrW = (LPWORD) _cmsMalloc(sizeof(WORD) * NewMatShaper -> p16.nSamples);
if (PtrW == NULL) {
cmsFreeMatShaper(NewMatShaper);
@@ -235,11 +242,11 @@
for (i=0; i < 3; i++)
{
- if (MatShaper -> L[i]) free(MatShaper ->L[i]);
- if (MatShaper -> L2[i]) free(MatShaper ->L2[i]);
+ if (MatShaper -> L[i]) _cmsFree(MatShaper ->L[i]);
+ if (MatShaper -> L2[i]) _cmsFree(MatShaper ->L2[i]);
}
- free(MatShaper);
+ _cmsFree(MatShaper);
}