author | Petr Nyc <petr.nyc@Oracle.COM> |
Thu, 01 Aug 2013 00:01:07 -0700 | |
branch | s11u1-sru |
changeset 2709 | 6bc2da8be356 |
parent 478 | 143405c872eb |
permissions | -rw-r--r-- |
478
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
1 |
See: http://cups.org/str.php?L3867 for details. |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
2 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
3 |
Index: filter/image-gif.c |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
4 |
=================================================================== |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
5 |
--- filter/image-gif.c (revision 9839) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
6 |
+++ filter/image-gif.c (working copy) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
7 |
@@ -353,7 +353,7 @@ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
8 |
* Read in another buffer... |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
9 |
*/ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
10 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
11 |
- if ((count = gif_get_block (fp, buf + last_byte)) <= 0) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
12 |
+ if ((count = gif_get_block(fp, buf + last_byte)) <= 0) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
13 |
{ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
14 |
/* |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
15 |
* Whoops, no more data! |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
16 |
@@ -582,20 +582,14 @@ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
17 |
gif_get_code(fp, 0, 1); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
18 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
19 |
/* |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
20 |
- * Wipe the decompressor table... |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
21 |
+ * Wipe the decompressor table (already mostly 0 due to the calloc above...) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
22 |
*/ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
23 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
24 |
fresh = 1; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
25 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
26 |
- for (i = 0; i < clear_code; i ++) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
27 |
- { |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
28 |
- table[0][i] = 0; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
29 |
+ for (i = 1; i < clear_code; i ++) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
30 |
table[1][i] = i; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
31 |
- } |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
32 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
33 |
- for (; i < 4096; i ++) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
34 |
- table[0][i] = table[1][0] = 0; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
35 |
- |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
36 |
sp = stack; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
37 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
38 |
return (0); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
39 |
@@ -605,30 +599,31 @@ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
40 |
fresh = 0; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
41 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
42 |
do |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
43 |
+ { |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
44 |
firstcode = oldcode = gif_get_code(fp, code_size, 0); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
45 |
+ } |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
46 |
while (firstcode == clear_code); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
47 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
48 |
- return (firstcode); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
49 |
+ return (firstcode & 255); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
50 |
} |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
51 |
else if (!table) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
52 |
return (0); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
53 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
54 |
if (sp > stack) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
55 |
- return (*--sp); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
56 |
+ return ((*--sp) & 255); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
57 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
58 |
- while ((code = gif_get_code (fp, code_size, 0)) >= 0) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
59 |
+ while ((code = gif_get_code(fp, code_size, 0)) >= 0) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
60 |
{ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
61 |
if (code == clear_code) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
62 |
{ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
63 |
- for (i = 0; i < clear_code; i ++) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
64 |
- { |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
65 |
- table[0][i] = 0; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
66 |
+ /* |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
67 |
+ * Clear/reset the compression table... |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
68 |
+ */ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
69 |
+ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
70 |
+ memset(table, 0, 2 * sizeof(gif_table_t)); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
71 |
+ for (i = 1; i < clear_code; i ++) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
72 |
table[1][i] = i; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
73 |
- } |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
74 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
75 |
- for (; i < 4096; i ++) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
76 |
- table[0][i] = table[1][i] = 0; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
77 |
- |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
78 |
code_size = set_code_size + 1; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
79 |
max_code_size = 2 * clear_code; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
80 |
max_code = clear_code + 2; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
81 |
@@ -637,13 +632,12 @@ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
82 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
83 |
firstcode = oldcode = gif_get_code(fp, code_size, 0); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
84 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
85 |
- return (firstcode); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
86 |
+ return (firstcode & 255); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
87 |
} |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
88 |
- else if (code == end_code) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
89 |
+ else if (code == end_code || code > max_code) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
90 |
{ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
91 |
- unsigned char buf[260]; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
92 |
+ unsigned char buf[260]; /* Block buffer */ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
93 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
94 |
- |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
95 |
if (!gif_eof) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
96 |
while (gif_get_block(fp, buf) > 0); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
97 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
98 |
@@ -652,7 +646,7 @@ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
99 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
100 |
incode = code; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
101 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
102 |
- if (code >= max_code) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
103 |
+ if (code == max_code) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
104 |
{ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
105 |
*sp++ = firstcode; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
106 |
code = oldcode; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
107 |
@@ -686,10 +680,10 @@ |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
108 |
oldcode = incode; |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
109 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
110 |
if (sp > stack) |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
111 |
- return (*--sp); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
112 |
+ return ((*--sp) & 255); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
113 |
} |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
114 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
115 |
- return (code); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
116 |
+ return (code & 255); |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
117 |
} |
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
118 |
|
143405c872eb
7079992 Problem with print/cups
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
119 |