1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2<html> 3<head> 4<title>Ghostscript change history (detailed)</title></title> 5<!-- generated by split_changelog.py from the output of cvs2cl.pl --> 6<!-- $Id: Details.htm,v 1.20 2005/10/20 20:14:37 ray Exp $ --> 7<link rel=stylesheet type="text/css" href="gs.css"> 8</head> 9<body> 10 11<p><strong><a name="2005-10-20_1946"></a> 122005-10-20 19:46 Ray Johnston</strong></p> 13<blockquote> 14<pre> 15Update doc files and version files for 8.53 release.</pre> 16<p>[doc/API.htm 1.53, doc/Bug-form.htm 1.49, doc/Bug-info.htm 1.49, doc/C-style.htm 1.55, doc/Commprod.htm 1.41, doc/Copying.htm 1.39, doc/DLL.htm 1.43, doc/Deprecated.htm 1.20, doc/Details8.htm 1.24, doc/Develop.htm 1.159, doc/Devices.htm 1.90, doc/Drivers.htm 1.58, doc/Fonts.htm 1.51, doc/Helpers.htm 1.44, doc/History1.htm 1.39, doc/History2.htm 1.39, doc/History3.htm 1.39, doc/History4.htm 1.39, doc/History5.htm 1.41, doc/History6.htm 1.56, doc/History7.htm 1.44, doc/History8.htm 1.29, doc/Htmstyle.htm 1.44, doc/Install.htm 1.56, doc/Issues.htm 1.52, doc/Language.htm 1.98, doc/Lib.htm 1.43, doc/Maintain.htm 1.50, doc/Make.htm 1.90, doc/News.htm 1.168, doc/Projects.htm 1.67, doc/Ps-style.htm 1.37, doc/Ps2epsi.htm 1.42, doc/Ps2pdf.htm 1.88, doc/Ps2ps2.htm 1.7, doc/Psfiles.htm 1.68, doc/Readme.htm 1.71, doc/Release.htm 1.95, doc/Source.htm 1.39, doc/Testing.htm 1.37, doc/Unix-lpr.htm 1.39, doc/Use.htm 1.136, doc/Xfonts.htm 1.39, doc/gs-vms.hlp 1.37, man/dvipdf.1 1.37, man/font2c.1 1.37, man/gs.1 1.38, man/gslp.1 1.37, man/gsnd.1 1.37, man/pdf2dsc.1 1.36, man/pdf2ps.1 1.38, man/pdfopt.1 1.36, man/pf2afm.1 1.37, man/pfbtopfa.1 1.38, man/printafm.1 1.37, man/ps2ascii.1 1.37, man/ps2epsi.1 1.35, man/ps2pdf.1 1.42, man/ps2pdfwr.1 1.41, man/ps2ps.1 1.44, man/wftopfa.1 1.37, src/gscdef.c 1.58, src/version.mak 1.87]</p> 17</blockquote> 18 19<p><strong><a name="2005-10-20_1942"></a> 202005-10-20 19:42 Ray Johnston</strong></p> 21<blockquote> 22<pre> 23Remove trailing ^M (<cr>) characters.</pre> 24<p>[src/gdevbmp.c 1.12, src/slzwd.c 1.7]</p> 25</blockquote> 26 27<p><strong><a name="2005-10-20_1851"></a> 282005-10-20 18:51 Raph Levien</strong></p> 29<blockquote> 30<pre> 31Fixes broken compile on amd64 platforms (see bug #688047 for details). 32This patch should be safe on all platforms with 32-bit longs, and is 33my best guess as to the right thing to do on Tru64 (where long is 64 34bits).</pre> 35<p>[src/tttypes.h 1.3]</p> 36</blockquote> 37 38<p><strong><a name="2005-10-20_1304"></a> 392005-10-20 13:04 Igor Melichev</strong></p> 40<blockquote> 41<pre> 42Fix (pdfwrite) : Suppress floating point number format in pdfmark operands (continued 2). 43 44DETAILS : 45 46Bug 688167 "change of real number fomat from fixed to exponential format". 47 48The last patch doesn't correctly handle numbers between 1e-7 and 1e-2. 49 50EXPECTED DIFFERENCES : 51 52None.</pre> 53<p>[lib/gs_pdfwr.ps 1.52]</p> 54</blockquote> 55 56<p><strong><a name="2005-10-18_2031"></a> 572005-10-18 20:31 Igor Melichev</strong></p> 58<blockquote> 59<pre> 60Fix (pdfwrite) : Suppress floating point number format in pdfmark operands (continued). 61 62DETAILS : 63 64Bug 688167 "change of real number fomat from fixed to exponential format". 65 66This improves the patch 67http://ghostscript.com/pipermail/gs-cvs/2005-September/005717.html 68with writing small reals in a fixed point number format. 69 70We did it after Raph's request in Comment #5 of the bug 688167. 71But we don't see a visible difference against the old implementation with any viewer. 72Therefore we believe that we shouldn't have done it (as we did before the implementation). 73Storing it now mainly for archiving purpose. 74 75If this change causes a problem, the author has no objection for unwinding it. 76 77EXPECTED DIFFERENCES : 78 79None.</pre> 80<p>[lib/gs_pdfwr.ps 1.51]</p> 81</blockquote> 82 83<p><strong><a name="2005-10-18_0905"></a> 842005-10-18 09:05 Igor Melichev</strong></p> 85<blockquote> 86<pre> 87Fix (pdfwrite) : Indexed colors were distorsed with encryption. 88 89DETAILS : 90 91Bug 688313 "pdfwrite : image colors depend on encryption". 92 93The old code applied encryption with a wrong (zero) object id to 94the palette of the indexed color space. After a viewer decrypts 95the palette with a right object id, colors appear wrong. 96 971. Use the PS string encoding instead the hexadecimal string encoding 98while converting the palette to PDF format (gdevpdfc.c). 99It provides a correct work of the part 3 below. 100See also part 4 below. 101 1022. Don't apply encryption when adding the palette 103to cos object (gdevpdfc.c, devs.mak). 104The old code was hacky, and new one is based on a general convention. 105 1063. Apply encryption with a right object id 107to the string which represents the palette 108when writing the cos object to the output PDF file. 109This is an implicit consequence of 110using the PS string encoding in the part 1 111due to a general convention about 112applying encryption when writing cos objects to the output file. 113 1144. Disable writing hexadecimal strings because their 115encryption is not yet implemented (gdevpdfu.c). 116 117The generated PDF may become longer in 1-2 kilobytes per palette 118due to PS encoding is less effective for palettes. 119This could be optimized with implelenting an encryption method 120for hexadecimal encoded strings in pdf_put_encoded_hex_string, 121and undo the part 1. The method should apply 3 filters : 122hexadecimal string decode, arc4 encode, hexadecimal string encode, 123because cos object stores strings in the outer format. 124Delaying this optimization for better times. 125 126EXPECTED DIFFERENCES : 127 128None.</pre> 129<p>[src/devs.mak 1.140, src/gdevpdfc.c 1.54, src/gdevpdfo.c 1.35, src/gdevpdfu.c 1.89]</p> 130</blockquote> 131 132<p><strong><a name="2005-10-18_0758"></a> 1332005-10-18 07:58 Igor Melichev</strong></p> 134<blockquote> 135<pre> 136Fix (pdfwrite) : Propagate error codes from pdf_write_value. 137 138DETAILS : 139 140This is a preparation for fixing the bug 141688313 "pdfwrite : image colors depend on encryption". 142 143In cases when no error happens, this code is algorithmocally equivalent. 144 145EXPECTED DIFFERENCES : 146 147None.</pre> 148<p>[src/gdevpdfo.c 1.34, src/gdevpdfu.c 1.88, src/gdevpdfx.h 1.138]</p> 149</blockquote> 150 151<p><strong><a name="2005-10-17_1923"></a> 1522005-10-17 19:23 Igor Melichev</strong></p> 153<blockquote> 154<pre> 155Fix (pdfwrite) : /BP pdfmark could create dead PDF objects (continiued). 156 157DETAILS : 158 159Bug 687560 "Invalid PDF if /BP pdfmarks with non-unique /_objdef". 160 1611. Prevent a potential crash while dereferencing NULL. 1622. Don't put unnamed objects into local_named_objects. 163 164Thanks to SaGS for pointing these problems out. 165 166EXPECTED DIFFERENCES : 167 168None.</pre> 169<p>[src/gdevpdfm.c 1.50]</p> 170</blockquote> 171 172<p><strong><a name="2005-10-12_1759"></a> 1732005-10-12 17:59 Igor Melichev</strong></p> 174<blockquote> 175<pre> 176Fix : Don't instantiate pattern when rendering to null device. 177 178DETAILS : 179 180Bug 688308 "Error: undefined; OffendingCommand: .type1execchar". 181 182The test case executes cshow or kshow with intrevene changing 183the current color space, causing a color load callout from fill_with_rule 184_after_ the callout completes. After that the check 185ctile->depth == dev->color_info.depth in gx_pattern_cache_lookup fails 186(not sure why - probably due to gsave-grestore in the pattern procedure). 187This patch skips entire character drawing when the device is null, 188so that those cumbersome stuff isn't envolved. 189 190EXPECTED DIFFERENCES : 191 192None.</pre> 193<p>[src/gsdevice.c 1.25, src/gspaint.c 1.10, src/gxdevcli.h 1.41]</p> 194</blockquote> 195 196<p><strong><a name="2005-10-12_1105"></a> 1972005-10-12 11:05 Igor Melichev</strong></p> 198<blockquote> 199<pre> 200Implementing a pointer stability validation in the garbager, continued. 201 202DETAILS : 203 204This patch is currently disabled, so the change is syntactically equivalent. 205 206Bug 688226 "The garbager must check a pointer stability.". 207 208This fixes a minor bug in the last patch. 209 210EXPECTED DIFFERENCES : 211 212None.</pre> 213<p>[src/ilocate.c 1.14]</p> 214</blockquote> 215 216<p><strong><a name="2005-10-12_1045"></a> 2172005-10-12 10:45 Igor Melichev</strong></p> 218<blockquote> 219<pre> 220Implementing a pointer stability validation in the garbager. 221 222DETAILS : 223 224This patch is currently disabled, so the change is syntacticly equivalent. 225 226Bug 688226 "The garbager must check a pointer stability.". 227 228This patch extends the object header with a space order number field, 229and compares the origin and the destination order numbers for each pointer 230while validating the heap. The enhanced object header is still 231within 16 bytes with the 32-bits architecture. See ialloc_validate_pointer_stability 232about the order number definition. 233 234This patch detected so many problems while running any document, 235as we can't enable it now. It is disabled with IGC_PTR_STABILITY_CHECK 236macro defined in gxobj.h . 237 238EXPECTED DIFFERENCES : 239 240None.</pre> 241<p>[src/gsalloc.c 1.24, src/gxalloc.h 1.12, src/gxobj.h 1.7, src/ialloc.c 1.8, src/ilocate.c 1.13]</p> 242</blockquote> 243 244<p><strong><a name="2005-10-12_0816"></a> 2452005-10-12 08:16 Igor Melichev</strong></p> 246<blockquote> 247<pre> 248Fix (pdfwrite) : Skip a clip path, which is set by setcachedevice (continued after July 28 205). 249 250DETAILS : 251 252Bug 687678 "pdfwrite : A Type 3 character cut-off". 253Bug 688327 "incorrect masking fill in pdfwrite". 254 255The old patch for this problem appears to define a too weak 256condition for recognizing a clipping set by setcachedevice, sectachedevice2. 257 258Now we think that a special stuff for this condition isn't needed because 259the condition may be united with the contition for "setcharwidth" : 260both things need to skip the clipping path, which was set exactly by 261setcachedevice, sectachedevice2 or setcharwidth. 262Checking the rectangle coordinates is not relevant. 263 264Therefore the change consists of 2 parts : 2651. Unwinding the patch http://ghostscript.com/pipermail/gs-cvs/2005-July/005625.html (IM1358) 266 (see also http://ghostscript.com/pipermail/gs-cvs/2005-July/005626.html). 2672. Remowing the (control == TEXT_SET_CHAR_WIDTH) check from pdf_text_set_cache, 268 so that the "caching" clipping path will be skipped in any case. 269 270Will add Bug688327.ps to comparefiles. 271 272EXPECTED DIFFERENCES : 273 274None.</pre> 275<p>[src/gdevpdfb.h 1.14, src/gdevpdfd.c 1.71, src/gdevpdfx.h 1.137, src/gdevpdti.c 1.53, src/gdevpdtt.c 1.104]</p> 276</blockquote> 277 278<p><strong><a name="2005-10-11_1004"></a> 2792005-10-11 10:04 Igor Melichev</strong></p> 280<blockquote> 281<pre> 282Fix (PS interpreter) : Allocate gs_screen_enum in same space as its components. 283 284DETAILS : 285 286Bug 688330 "A dangling pointer in gx_screen_enum.". 287 288The old code allocates gs_screen_enum in current memory space and frees to 289the memory space of its components, which is obtained from 290the 'setscreen' operand (the spot function). 291In the test case the first memory space is local, and the second one is global. 292We guess the last statement became true after a recent change to the PDF interpreter. 293 294This patch allocates gs_screen_enum in same space as its components. 295The pritotype of zscreen_enum_init has been changed due to no method for 296obtaining a space attribute value for iref from a gs_memory_t instance 297(well, generally it is impossible, but one could solve if the memory 298allocator is a PS interpreter's allocator except stable ones). 299 300We noticed that components of gs_screen_enum have pointers to memory 301allocator structures, but don't list them in the related memory descriptors. 302We're not sure whether a memory allocator structure may relocate or not - 303our investigation through code didn't give an unique answer. 304For now we leave component descriptors as they were before the patch. 305 306EXPECTED DIFFERENCES : 307 308None.</pre> 309<p>[src/iht.h 1.6, src/zht.c 1.8, src/zht1.c 1.7, src/zht2.c 1.14]</p> 310</blockquote> 311 312<p><strong><a name="2005-10-10_1909"></a> 3132005-10-10 19:09 Igor Melichev</strong></p> 314<blockquote> 315<pre> 316Fix: Cygwin/gcc warninhs. 317 318EXPECTED DIFFERENCES : 319 320None.</pre> 321<p>[src/devs.mak 1.139, src/gdevpdfb.c 1.34]</p> 322</blockquote> 323 324<p><strong><a name="2005-10-10_1858"></a> 3252005-10-10 18:58 Igor Melichev</strong></p> 326<blockquote> 327<pre> 328Optimizing the transparency compositor. 329 330DETAILS : 331 332Bug 688255 "ai7 pdf fails on 7.03, runs for ten + minutes on 8.51". 333 334The old code always allocates a transparency buffers for entire band. 335The new code accounts group bbox to minimize buffers. 336Due to that buffers appear empty for many of bands. 337The time consumption for the test case of the bug 688255 is dropped in about 100 times 338(from 8000 seconds to 71 seconds on a 3.07GHz machine, measured with debug build). 339 3401. The transparency bbox computes in pdf14_begin_transparency_group from 341 the group bbox and the CTM (gdevp14.c). 3422. Handle an empty buffer pdf14_buf_new, pdf14_pop_transparency_group (gdevp14.c). 3433. Fixed a bug in the rectangle clipping in 344 pdf14_mark_fill_rectangle, pdf14_mark_fill_rectangle_ko_simple. 345 The old code didn't sense it because bbox always covered entire band (gdevp14.c). 3464. Write the bbox to clist in c_pdf14trans_write and read it in c_pdf14trans_read. 3475. The pdf14 compositor needs CTM to transform the group bbox to the device space. 348 Forced the writing of CTM to clist before writing the compositor in clist_create_compositor. 349 (Sorry, it appears some ugly due to pcte->type->procs.write creates a body 350 of a command, but we need to create a set of two commands; 351 Another minor optimization - a narrowing the set of bands - is delayed, 352 see comments in code in clist_create_compositor) (gxclimag.c). 3536. New functions cmd_write_ctm_return_length, cmd_write_ctm are factored out for (5) 354 (gxclpath.c, gxclpath.h). This part of the change is algorithmically eqiuivalent. 3557. Minor change : fixed coding style of "} else {" in gdevp14.c . 356 357EXPECTED DIFFERENCES : 358 359None.</pre> 360<p>[src/gdevp14.c 1.35, src/gxclimag.c 1.13, src/gxclpath.c 1.21, src/gxclpath.h 1.13]</p> 361</blockquote> 362 363<p><strong><a name="2005-10-07_1949"></a> 3642005-10-07 19:49 Ray Johnston</strong></p> 365<blockquote> 366<pre> 367Add missing space in CVS PRE-RELEASE string.</pre> 368<p>[src/gscdef.c 1.57]</p> 369</blockquote> 370 371<p><strong><a name="2005-10-07_1946"></a> 3722005-10-07 19:46 Ray Johnston</strong></p> 373<blockquote> 374<pre> 375Bump version after the 8.52 release (to 8.53 CVS PRE-RELEASE).</pre> 376<p>[doc/News.htm 1.167, lib/gs_init.ps 1.120, src/gscdef.c 1.56, src/version.mak 1.86]</p> 377</blockquote> 378</body> 379</html> 380