xref: /aosp_15_r20/external/pdfium/third_party/lcms/0027-changes-from-beginning-of-time.patch (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Workerdiff --git a/third_party/lcms/src/cmscgats.c b/third_party/lcms/src/cmscgats.c
2*3ac0a46fSAndroid Build Coastguard Workerindex a0c25c024..55f74ede8 100644
3*3ac0a46fSAndroid Build Coastguard Worker--- a/third_party/lcms/src/cmscgats.c
4*3ac0a46fSAndroid Build Coastguard Worker+++ b/third_party/lcms/src/cmscgats.c
5*3ac0a46fSAndroid Build Coastguard Worker@@ -38,7 +38,10 @@
6*3ac0a46fSAndroid Build Coastguard Worker #define DEFAULT_DBL_FORMAT  "%.10g" // Double formatting
7*3ac0a46fSAndroid Build Coastguard Worker
8*3ac0a46fSAndroid Build Coastguard Worker #ifdef CMS_IS_WINDOWS_
9*3ac0a46fSAndroid Build Coastguard Worker-#    include <io.h>
10*3ac0a46fSAndroid Build Coastguard Worker+//sunliang.liu modified 2010426 for wince error
11*3ac0a46fSAndroid Build Coastguard Worker+# ifndef _WIN32_WCE
12*3ac0a46fSAndroid Build Coastguard Worker+#   include <io.h>
13*3ac0a46fSAndroid Build Coastguard Worker+# endif
14*3ac0a46fSAndroid Build Coastguard Worker #    define DIR_CHAR    '\\'
15*3ac0a46fSAndroid Build Coastguard Worker #else
16*3ac0a46fSAndroid Build Coastguard Worker #    define DIR_CHAR    '/'
17*3ac0a46fSAndroid Build Coastguard Workerdiff --git a/third_party/lcms/src/cmsgamma.c b/third_party/lcms/src/cmsgamma.c
18*3ac0a46fSAndroid Build Coastguard Workerindex eb3dd881c..6e36cf462 100644
19*3ac0a46fSAndroid Build Coastguard Worker--- a/third_party/lcms/src/cmsgamma.c
20*3ac0a46fSAndroid Build Coastguard Worker+++ b/third_party/lcms/src/cmsgamma.c
21*3ac0a46fSAndroid Build Coastguard Worker@@ -749,14 +749,19 @@ void CMSEXPORT cmsFreeToneCurve(cmsToneCurve* Curve)
22*3ac0a46fSAndroid Build Coastguard Worker {
23*3ac0a46fSAndroid Build Coastguard Worker     cmsContext ContextID;
24*3ac0a46fSAndroid Build Coastguard Worker
25*3ac0a46fSAndroid Build Coastguard Worker-    if (Curve == NULL) return;
26*3ac0a46fSAndroid Build Coastguard Worker+    // added by Xiaochuan Liu
27*3ac0a46fSAndroid Build Coastguard Worker+    // Curve->InterpParams may be null
28*3ac0a46fSAndroid Build Coastguard Worker+    if (Curve == NULL || Curve->InterpParams == NULL) return;
29*3ac0a46fSAndroid Build Coastguard Worker
30*3ac0a46fSAndroid Build Coastguard Worker     ContextID = Curve ->InterpParams->ContextID;
31*3ac0a46fSAndroid Build Coastguard Worker
32*3ac0a46fSAndroid Build Coastguard Worker     _cmsFreeInterpParams(Curve ->InterpParams);
33*3ac0a46fSAndroid Build Coastguard Worker+    Curve ->InterpParams = NULL;
34*3ac0a46fSAndroid Build Coastguard Worker
35*3ac0a46fSAndroid Build Coastguard Worker-    if (Curve -> Table16)
36*3ac0a46fSAndroid Build Coastguard Worker+    if (Curve -> Table16) {
37*3ac0a46fSAndroid Build Coastguard Worker         _cmsFree(ContextID, Curve ->Table16);
38*3ac0a46fSAndroid Build Coastguard Worker+        Curve ->Table16 = NULL;
39*3ac0a46fSAndroid Build Coastguard Worker+    }
40*3ac0a46fSAndroid Build Coastguard Worker
41*3ac0a46fSAndroid Build Coastguard Worker     if (Curve ->Segments) {
42*3ac0a46fSAndroid Build Coastguard Worker
43*3ac0a46fSAndroid Build Coastguard Worker@@ -876,18 +881,25 @@ void CMSEXPORT cmsFreeToneCurve(cmsToneCurve* Curve)
44*3ac0a46fSAndroid Build Coastguard Worker
45*3ac0a46fSAndroid Build Coastguard Worker             if (Curve ->Segments[i].SampledPoints) {
46*3ac0a46fSAndroid Build Coastguard Worker                 _cmsFree(ContextID, Curve ->Segments[i].SampledPoints);
47*3ac0a46fSAndroid Build Coastguard Worker+                Curve ->Segments[i].SampledPoints = NULL;
48*3ac0a46fSAndroid Build Coastguard Worker             }
49*3ac0a46fSAndroid Build Coastguard Worker
50*3ac0a46fSAndroid Build Coastguard Worker-            if (Curve ->SegInterp[i] != 0)
51*3ac0a46fSAndroid Build Coastguard Worker+            if (Curve ->SegInterp[i] != 0) {
52*3ac0a46fSAndroid Build Coastguard Worker                 _cmsFreeInterpParams(Curve->SegInterp[i]);
53*3ac0a46fSAndroid Build Coastguard Worker+                Curve->SegInterp[i] = NULL;
54*3ac0a46fSAndroid Build Coastguard Worker+            }
55*3ac0a46fSAndroid Build Coastguard Worker         }
56*3ac0a46fSAndroid Build Coastguard Worker
57*3ac0a46fSAndroid Build Coastguard Worker         _cmsFree(ContextID, Curve ->Segments);
58*3ac0a46fSAndroid Build Coastguard Worker+        Curve ->Segments = NULL;
59*3ac0a46fSAndroid Build Coastguard Worker         _cmsFree(ContextID, Curve ->SegInterp);
60*3ac0a46fSAndroid Build Coastguard Worker+        Curve ->SegInterp = NULL;
61*3ac0a46fSAndroid Build Coastguard Worker     }
62*3ac0a46fSAndroid Build Coastguard Worker
63*3ac0a46fSAndroid Build Coastguard Worker-    if (Curve -> Evals)
64*3ac0a46fSAndroid Build Coastguard Worker+    if (Curve -> Evals) {
65*3ac0a46fSAndroid Build Coastguard Worker         _cmsFree(ContextID, Curve -> Evals);
66*3ac0a46fSAndroid Build Coastguard Worker+        Curve -> Evals = NULL;
67*3ac0a46fSAndroid Build Coastguard Worker+    }
68*3ac0a46fSAndroid Build Coastguard Worker
69*3ac0a46fSAndroid Build Coastguard Worker     _cmsFree(ContextID, Curve);
70*3ac0a46fSAndroid Build Coastguard Worker }
71*3ac0a46fSAndroid Build Coastguard Workerdiff --git a/third_party/lcms/src/cmsio0.c b/third_party/lcms/src/cmsio0.c
72*3ac0a46fSAndroid Build Coastguard Workerindex 1b026488d..cc5f89064 100644
73*3ac0a46fSAndroid Build Coastguard Worker--- a/third_party/lcms/src/cmsio0.c
74*3ac0a46fSAndroid Build Coastguard Worker+++ b/third_party/lcms/src/cmsio0.c
75*3ac0a46fSAndroid Build Coastguard Worker@@ -479,6 +479,14 @@ cmsIOHANDLER* CMSEXPORT cmsGetProfileIOhandler(cmsHPROFILE hProfile)
76*3ac0a46fSAndroid Build Coastguard Worker        return Icc->IOhandler;
77*3ac0a46fSAndroid Build Coastguard Worker }
78*3ac0a46fSAndroid Build Coastguard Worker
79*3ac0a46fSAndroid Build Coastguard Worker+#ifdef _WIN32_WCE
80*3ac0a46fSAndroid Build Coastguard Worker+time_t wceex_time(time_t *timer);
81*3ac0a46fSAndroid Build Coastguard Worker+struct tm * wceex_gmtime(const time_t *timer);
82*3ac0a46fSAndroid Build Coastguard Worker+
83*3ac0a46fSAndroid Build Coastguard Worker+#define time wceex_time
84*3ac0a46fSAndroid Build Coastguard Worker+#define gmtime wceex_gmtime
85*3ac0a46fSAndroid Build Coastguard Worker+#endif
86*3ac0a46fSAndroid Build Coastguard Worker+
87*3ac0a46fSAndroid Build Coastguard Worker // Creates an empty structure holding all required parameters
88*3ac0a46fSAndroid Build Coastguard Worker cmsHPROFILE CMSEXPORT cmsCreateProfilePlaceholder(cmsContext ContextID)
89*3ac0a46fSAndroid Build Coastguard Worker {
90*3ac0a46fSAndroid Build Coastguard Worker@@ -570,6 +578,14 @@ int _cmsSearchTag(_cmsICCPROFILE* Icc, cmsTagSignature sig, cmsBool lFollowLinks
91*3ac0a46fSAndroid Build Coastguard Worker
92*3ac0a46fSAndroid Build Coastguard Worker         // Yes, follow link
93*3ac0a46fSAndroid Build Coastguard Worker         if (LinkedSig != (cmsTagSignature) 0) {
94*3ac0a46fSAndroid Build Coastguard Worker+            // fix bug mantis id#0055942
95*3ac0a46fSAndroid Build Coastguard Worker+            // assume that TRCTag and ColorantTag can't be linked.
96*3ac0a46fSAndroid Build Coastguard Worker+            // Xiaochuan Liu 2014-04-23
97*3ac0a46fSAndroid Build Coastguard Worker+            if ((sig == cmsSigRedTRCTag || sig == cmsSigGreenTRCTag || sig == cmsSigBlueTRCTag) &&
98*3ac0a46fSAndroid Build Coastguard Worker+                (LinkedSig == cmsSigRedColorantTag || LinkedSig == cmsSigGreenColorantTag || LinkedSig == cmsSigBlueColorantTag))
99*3ac0a46fSAndroid Build Coastguard Worker+            {
100*3ac0a46fSAndroid Build Coastguard Worker+                return n;
101*3ac0a46fSAndroid Build Coastguard Worker+            }
102*3ac0a46fSAndroid Build Coastguard Worker             sig = LinkedSig;
103*3ac0a46fSAndroid Build Coastguard Worker         }
104*3ac0a46fSAndroid Build Coastguard Worker
105*3ac0a46fSAndroid Build Coastguard Worker@@ -1363,6 +1379,12 @@ Error:
106*3ac0a46fSAndroid Build Coastguard Worker     return 0;
107*3ac0a46fSAndroid Build Coastguard Worker }
108*3ac0a46fSAndroid Build Coastguard Worker
109*3ac0a46fSAndroid Build Coastguard Worker+#ifdef _WIN32_WCE
110*3ac0a46fSAndroid Build Coastguard Worker+int wceex_unlink(const char *filename);
111*3ac0a46fSAndroid Build Coastguard Worker+#ifndef remove
112*3ac0a46fSAndroid Build Coastguard Worker+#   define remove wceex_unlink
113*3ac0a46fSAndroid Build Coastguard Worker+#endif
114*3ac0a46fSAndroid Build Coastguard Worker+#endif
115*3ac0a46fSAndroid Build Coastguard Worker
116*3ac0a46fSAndroid Build Coastguard Worker // Low-level save to disk.
117*3ac0a46fSAndroid Build Coastguard Worker cmsBool  CMSEXPORT cmsSaveProfileToFile(cmsHPROFILE hProfile, const char* FileName)
118