GraphicsMagick: 2 new changesets
GraphicsMagick Commits <[email protected]> Mon, 22 Jul 2024 13:35:14 -0500
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.4738.1721673328.7812.graphicsmagick-commit@lists.sourceforge.net> |
changeset c95fbfff64b2 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=c95fbfff64b2 summary: ORA module is dependent on HasLIBZIP. changeset 48d49922891a in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=48d49922891a summary: Place an artibrary limit on maximum filesystem block size. Some code simplification. diffstat: ChangeLog | 8 + Makefile.in | 40 ++-- coders/Makefile.am | 9 +- magick/blob.c | 18 +- magick/pixel_cache.c | 11 +- www/ChangeLog.html | 9 + www/api/pixel_cache.html | 390 +++++++++++++++++++++++----------------------- 7 files changed, 255 insertions(+), 230 deletions(-) diffs (truncated from 1064 to 500 lines): diff -r 33aeb265abe4 -r 48d49922891a ChangeLog --- a/ChangeLog Thu Jul 18 15:07:10 2024 -0500 +++ b/ChangeLog Mon Jul 22 13:33:42 2024 -0500 @@ -1,3 +1,11 @@ +2024-07-22 Bob Friesenhahn <[email protected]> + + * magick/blob.c (MagickMaxFileSystemBlockSize): Place an artibrary + limit on maximum filesystem block size. + + * coders/Makefile.am (MAGICK_ORA_MODULES): ORA module is dependent + on HasLIBZIP. + 2024-07-18 Bob Friesenhahn <[email protected]> * magick/command.c (MogrifyImage): Change utility '-depth N' to a diff -r 33aeb265abe4 -r 48d49922891a Makefile.in --- a/Makefile.in Thu Jul 18 15:07:10 2024 -0500 +++ b/Makefile.in Mon Jul 22 13:33:42 2024 -0500 @@ -767,7 +767,8 @@ coders_ora_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(coders_ora_la_LDFLAGS) $(LDFLAGS) -o $@ -@WITH_MODULES_TRUE@am_coders_ora_la_rpath = -rpath $(codersdir) +@HasLIBZIP_TRUE@@WITH_MODULES_TRUE@am_coders_ora_la_rpath = -rpath \ +@HasLIBZIP_TRUE@@WITH_MODULES_TRUE@ $(codersdir) coders_otb_la_DEPENDENCIES = $(LIBMAGICK) am_coders_otb_la_OBJECTS = coders/otb_la-otb.lo coders_otb_la_OBJECTS = $(am_coders_otb_la_OBJECTS) @@ -1355,16 +1356,18 @@ @HasJPEG_TRUE@ coders/magick_libGraphicsMagick_la-jpeg.lo @HasJXL_TRUE@am__objects_12 = \ @HasJXL_TRUE@ coders/magick_libGraphicsMagick_la-jxl.lo -@HasPNG_TRUE@am__objects_13 = \ +@HasLIBZIP_TRUE@am__objects_13 = \ +@HasLIBZIP_TRUE@ coders/magick_libGraphicsMagick_la-ora.lo +@HasPNG_TRUE@am__objects_14 = \ @HasPNG_TRUE@ coders/magick_libGraphicsMagick_la-png.lo -@HasTIFF_TRUE@am__objects_14 = \ +@HasTIFF_TRUE@am__objects_15 = \ @HasTIFF_TRUE@ coders/magick_libGraphicsMagick_la-ept.lo \ @HasTIFF_TRUE@ coders/magick_libGraphicsMagick_la-tiff.lo -@HasWEBP_TRUE@am__objects_15 = \ +@HasWEBP_TRUE@am__objects_16 = \ @HasWEBP_TRUE@ coders/magick_libGraphicsMagick_la-webp.lo -@HasX11_TRUE@am__objects_16 = coders/magick_libGraphicsMagick_la-x.lo \ +@HasX11_TRUE@am__objects_17 = coders/magick_libGraphicsMagick_la-x.lo \ @HasX11_TRUE@ coders/magick_libGraphicsMagick_la-xwd.lo -am__objects_17 = coders/magick_libGraphicsMagick_la-aai.lo \ +am__objects_18 = coders/magick_libGraphicsMagick_la-aai.lo \ coders/magick_libGraphicsMagick_la-art.lo \ coders/magick_libGraphicsMagick_la-avs.lo \ coders/magick_libGraphicsMagick_la-bmp.lo \ @@ -1406,8 +1409,7 @@ coders/magick_libGraphicsMagick_la-msl.lo \ coders/magick_libGraphicsMagick_la-mtv.lo \ coders/magick_libGraphicsMagick_la-mvg.lo \ - coders/magick_libGraphicsMagick_la-null.lo \ - coders/magick_libGraphicsMagick_la-ora.lo \ + coders/magick_libGraphicsMagick_la-null.lo $(am__objects_13) \ coders/magick_libGraphicsMagick_la-otb.lo \ coders/magick_libGraphicsMagick_la-palm.lo \ coders/magick_libGraphicsMagick_la-pcd.lo \ @@ -1417,7 +1419,7 @@ coders/magick_libGraphicsMagick_la-pdf.lo \ coders/magick_libGraphicsMagick_la-pict.lo \ coders/magick_libGraphicsMagick_la-pix.lo \ - coders/magick_libGraphicsMagick_la-plasma.lo $(am__objects_13) \ + coders/magick_libGraphicsMagick_la-plasma.lo $(am__objects_14) \ coders/magick_libGraphicsMagick_la-pnm.lo \ coders/magick_libGraphicsMagick_la-preview.lo \ coders/magick_libGraphicsMagick_la-ps.lo \ @@ -1433,7 +1435,7 @@ coders/magick_libGraphicsMagick_la-stegano.lo \ coders/magick_libGraphicsMagick_la-sun.lo \ coders/magick_libGraphicsMagick_la-svg.lo \ - coders/magick_libGraphicsMagick_la-tga.lo $(am__objects_14) \ + coders/magick_libGraphicsMagick_la-tga.lo $(am__objects_15) \ coders/magick_libGraphicsMagick_la-tile.lo \ coders/magick_libGraphicsMagick_la-tim.lo \ coders/magick_libGraphicsMagick_la-topol.lo \ @@ -1445,18 +1447,18 @@ coders/magick_libGraphicsMagick_la-vicar.lo \ coders/magick_libGraphicsMagick_la-vid.lo \ coders/magick_libGraphicsMagick_la-viff.lo \ - coders/magick_libGraphicsMagick_la-wbmp.lo $(am__objects_15) \ + coders/magick_libGraphicsMagick_la-wbmp.lo $(am__objects_16) \ coders/magick_libGraphicsMagick_la-wmf.lo \ - coders/magick_libGraphicsMagick_la-wpg.lo $(am__objects_16) \ + coders/magick_libGraphicsMagick_la-wpg.lo $(am__objects_17) \ coders/magick_libGraphicsMagick_la-xbm.lo \ coders/magick_libGraphicsMagick_la-xc.lo \ coders/magick_libGraphicsMagick_la-xcf.lo \ coders/magick_libGraphicsMagick_la-xpm.lo \ coders/magick_libGraphicsMagick_la-yuv.lo -am__objects_18 = filters/magick_libGraphicsMagick_la-analyze.lo +am__objects_19 = filters/magick_libGraphicsMagick_la-analyze.lo @WITH_MODULES_FALSE@am_magick_libGraphicsMagick_la_OBJECTS = \ @WITH_MODULES_FALSE@ $(am__objects_2) $(am__objects_3) \ -@WITH_MODULES_FALSE@ $(am__objects_17) $(am__objects_18) +@WITH_MODULES_FALSE@ $(am__objects_18) $(am__objects_19) @WITH_MODULES_TRUE@am_magick_libGraphicsMagick_la_OBJECTS = \ @WITH_MODULES_TRUE@ $(am__objects_2) $(am__objects_3) magick_libGraphicsMagick_la_OBJECTS = \ @@ -1467,11 +1469,11 @@ $(LDFLAGS) -o $@ wand_libGraphicsMagickWand_la_DEPENDENCIES = $(LIBMAGICK) \ $(am__DEPENDENCIES_1) -am__objects_19 = wand/libGraphicsMagickWand_la-drawing_wand.lo \ +am__objects_20 = wand/libGraphicsMagickWand_la-drawing_wand.lo \ wand/libGraphicsMagickWand_la-magick_compat.lo \ wand/libGraphicsMagickWand_la-magick_wand.lo \ wand/libGraphicsMagickWand_la-pixel_wand.lo -am_wand_libGraphicsMagickWand_la_OBJECTS = $(am__objects_19) +am_wand_libGraphicsMagickWand_la_OBJECTS = $(am__objects_20) wand_libGraphicsMagickWand_la_OBJECTS = \ $(am_wand_libGraphicsMagickWand_la_OBJECTS) wand_libGraphicsMagickWand_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -2976,6 +2978,8 @@ @HasX11_TRUE@MAGICK_X11_CODER_SRCS = coders/x.c coders/xwd.c @HasWEBP_TRUE@MAGICK_WEBP_MODULES = coders/webp.la @HasWEBP_TRUE@MAGICK_WEBP_SRCS = coders/webp.c +@HasLIBZIP_TRUE@MAGICK_ORA_MODULES = coders/ora.la +@HasLIBZIP_TRUE@MAGICK_ORA_SRCS = coders/ora.c @ENABLE_BROKEN_CODERS_TRUE@MAGICK_BROKEN_MODULES = coders/psd.la @ENABLE_BROKEN_CODERS_TRUE@MAGICK_BROKEN_SRCS = coders/psd.c MAGICK_CODER_CPPFLAGS = \ @@ -3034,7 +3038,7 @@ coders/mtv.c \ coders/mvg.c \ coders/null.c \ - coders/ora.c \ + $(MAGICK_ORA_SRCS) \ coders/otb.c \ coders/palm.c \ coders/pcd.c \ @@ -3138,7 +3142,7 @@ @WITH_MODULES_TRUE@ coders/mtv.la \ @WITH_MODULES_TRUE@ coders/mvg.la \ @WITH_MODULES_TRUE@ coders/null.la \ -@WITH_MODULES_TRUE@ coders/ora.la \ +@WITH_MODULES_TRUE@ $(MAGICK_ORA_MODULES) \ @WITH_MODULES_TRUE@ coders/otb.la \ @WITH_MODULES_TRUE@ coders/palm.la \ @WITH_MODULES_TRUE@ coders/pcd.la \ diff -r 33aeb265abe4 -r 48d49922891a coders/Makefile.am --- a/coders/Makefile.am Thu Jul 18 15:07:10 2024 -0500 +++ b/coders/Makefile.am Mon Jul 22 13:33:42 2024 -0500 @@ -71,6 +71,11 @@ MAGICK_WEBP_SRCS = coders/webp.c endif +if HasLIBZIP +MAGICK_ORA_MODULES = coders/ora.la +MAGICK_ORA_SRCS = coders/ora.c +endif + if ENABLE_BROKEN_CODERS MAGICK_BROKEN_MODULES = coders/psd.la MAGICK_BROKEN_SRCS = coders/psd.c @@ -132,7 +137,7 @@ coders/mtv.c \ coders/mvg.c \ coders/null.c \ - coders/ora.c \ + $(MAGICK_ORA_SRCS) \ coders/otb.c \ coders/palm.c \ coders/pcd.c \ @@ -236,7 +241,7 @@ coders/mtv.la \ coders/mvg.la \ coders/null.la \ - coders/ora.la \ + $(MAGICK_ORA_MODULES) \ coders/otb.la \ coders/palm.la \ coders/pcd.la \ diff -r 33aeb265abe4 -r 48d49922891a magick/blob.c --- a/magick/blob.c Thu Jul 18 15:07:10 2024 -0500 +++ b/magick/blob.c Mon Jul 22 13:33:42 2024 -0500 @@ -67,7 +67,9 @@ Define declarations. */ #define DefaultBlobQuantum 65541 - +#if !defined(MagickMaxFileSystemBlockSize) +#define MagickMaxFileSystemBlockSize 4194304 +#endif /* if !defined(MagickMaxFileSystemBlockSize) */ /* Enum declarations. @@ -631,11 +633,12 @@ block_size; block_size=MagickGetFileSystemBlockSize(); + block_size=Min(MagickMaxFileSystemBlockSize,block_size); /* Write data to file. */ - for (i=0; i < length; i+=count) + for (i=0; i < length; i+=(size_t) count) { size_t remaining; @@ -644,11 +647,7 @@ amount; remaining=length - i; - if (remaining > block_size) - amount=(MAGICK_POSIX_IO_SIZE_T) block_size; - else - amount=(MAGICK_POSIX_IO_SIZE_T) remaining; - + amount=Min(remaining,block_size); count=write(file,(char *) blob+i,amount); if (count <= 0) break; @@ -1509,6 +1508,7 @@ vbuf_size; vbuf_size=MagickGetFileSystemBlockSize(); + vbuf_size=Min(MagickMaxFileSystemBlockSize,vbuf_size); if (0 != vbuf_size) (void) setvbuf(file,NULL,_IOFBF,vbuf_size); @@ -2508,6 +2508,7 @@ return(MagickFail); } block_size=MagickGetFileSystemBlockSize(); + block_size=Min(MagickMaxFileSystemBlockSize,block_size); buffer=MagickAllocateMemory(char *,block_size); if (buffer == (char *) NULL) { @@ -2518,7 +2519,7 @@ } for (i=0; (length=ReadBlob(image,block_size,buffer)) > 0; ) { - for (i=0; i < length; i+=count) + for (i=0; i < length; i+=(size_t) count) { count=write(file,buffer+i,(MAGICK_POSIX_IO_SIZE_T) (length-i)); if (count <= 0) @@ -2824,6 +2825,7 @@ Cache I/O block size */ image->blob->block_size=MagickGetFileSystemBlockSize(); + image->blob->block_size=Min(MagickMaxFileSystemBlockSize,image->blob->block_size); assert(image->blob->block_size > 0); /* Attach existing memory buffer for I/O and immediately return. diff -r 33aeb265abe4 -r 48d49922891a magick/pixel_cache.c --- a/magick/pixel_cache.c Thu Jul 18 15:07:10 2024 -0500 +++ b/magick/pixel_cache.c Mon Jul 22 13:33:42 2024 -0500 @@ -3437,7 +3437,7 @@ { (void) LogMagickEvent(CacheEvent,GetMagickModule(), "disk => memory clone"); - for (offset=0; offset < cache_info->length; offset+=count) + for (offset=0; offset < cache_info->length; offset+=(magick_uint64_t) count) { size_t requested_io_size; @@ -3494,7 +3494,7 @@ { (void) LogMagickEvent(CacheEvent,GetMagickModule(), "memory => disk clone"); - for (offset=0L; offset < clone_info->length; offset+=count) + for (offset=0L; offset < clone_info->length; offset+=(magick_uint64_t) count) { size_t requested_io_size; @@ -3543,7 +3543,7 @@ for (offset=0, length=0; (count=read(cache_file,buffer,MaxBufferSize)) > 0; ) { length=(size_t) count; - for (offset=0; offset < length; offset+=count) + for (offset=0; offset < length; offset+=(magick_uint64_t) count) { size_t requested_io_size; @@ -3552,10 +3552,7 @@ io_size; requested_io_size=(size_t) (length-offset); - if (requested_io_size > MAGICK_IO_MAX) - io_size=MAGICK_IO_MAX; - else - io_size=(MAGICK_POSIX_IO_SIZE_T) requested_io_size; + io_size=(MAGICK_POSIX_IO_SIZE_T) Min(MAGICK_IO_MAX,requested_io_size); count=write(clone_file,buffer+offset,io_size); if (count <= 0) diff -r 33aeb265abe4 -r 48d49922891a www/ChangeLog.html --- a/www/ChangeLog.html Thu Jul 18 15:07:10 2024 -0500 +++ b/www/ChangeLog.html Mon Jul 22 13:33:42 2024 -0500 @@ -38,6 +38,15 @@ <main id="graphicsmagick-changelog"> <h1 class="title">GraphicsMagick ChangeLog</h1> +<p>2024-07-22 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> +<blockquote> +<ul class="simple"> +<li><p>magick/blob.c (MagickMaxFileSystemBlockSize): Place an artibrary +limit on maximum filesystem block size.</p></li> +<li><p>coders/Makefile.am (MAGICK_ORA_MODULES): ORA module is dependent +on HasLIBZIP.</p></li> +</ul> +</blockquote> <p>2024-07-18 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> <blockquote> <ul class="simple"> diff -r 33aeb265abe4 -r 48d49922891a www/api/pixel_cache.html --- a/www/api/pixel_cache.html Thu Jul 18 15:07:10 2024 -0500 +++ b/www/api/pixel_cache.html Mon Jul 22 13:33:42 2024 -0500 @@ -36,7 +36,7 @@ </ul> </div> -<div class="document" id="pixel-cache"> +<main id="pixel-cache"> <h1 class="title">pixel_cache</h1> <p class="subtitle" id="image-pixel-cache-working-pixels">Image pixel cache (working pixels).</p> <div class="contents topic" id="contents"> @@ -76,13 +76,13 @@ <li><p><a class="reference internal" href="#syncimagepixelsex" id="id94">SyncImagePixelsEx</a></p></li> </ul> </div> -<div class="section" id="accesscacheviewpixels"> +<section id="accesscacheviewpixels"> <h1><a class="toc-backref" href="#id63">AccessCacheViewPixels</a></h1> -<div class="section" id="synopsis"> +<section id="synopsis"> <h2>Synopsis</h2> <pre class="literal-block"><a class="reference external" href="../api/types.html#pixelpacket">PixelPacket</a> *AccessCacheViewPixels( const <a class="reference external" href="../api/types.html#viewinfo">ViewInfo</a> *view );</pre> -</div> -<div class="section" id="description"> +</section> +<section id="description"> <h2>Description</h2> <p>Method AccessCacheViewPixels returns writeable pixels associated with the specified view.</p> @@ -98,15 +98,15 @@ <dd><p>The address of a structure of type ViewInfo.</p> </dd> </dl> -</div> -</div> -<div class="section" id="accessimmutableindexes"> +</section> +</section> +<section id="accessimmutableindexes"> <h1><a class="toc-backref" href="#id64">AccessImmutableIndexes</a></h1> -<div class="section" id="id1"> +<section id="id1"> <h2>Synopsis</h2> <pre class="literal-block">const IndexPacket *AccessImmutableIndexes( const <a class="reference external" href="../api/types.html#image">Image</a> *image );</pre> -</div> -<div class="section" id="id2"> +</section> +<section id="id2"> <h2>Description</h2> <p>AccessImmutableIndexes() returns the read-only colormap indexes associated with the last call to AcquireImagePixels(). NULL is @@ -123,15 +123,15 @@ <dd><p>The image.</p> </dd> </dl> -</div> -</div> -<div class="section" id="accessmutableindexes"> +</section> +</section> +<section id="accessmutableindexes"> <h1><a class="toc-backref" href="#id65">AccessMutableIndexes</a></h1> -<div class="section" id="id3"> +<section id="id3"> <h2>Synopsis</h2> <pre class="literal-block">IndexPacket *AccessMutableIndexes( <a class="reference external" href="../api/types.html#image">Image</a> *image );</pre> -</div> -<div class="section" id="id4"> +</section> +<section id="id4"> <h2>Description</h2> <p>AccessMutableIndexes() returns the writeable colormap indexes associated with the last call to SetImagePixels() or GetImagePixels(). NULL is @@ -148,15 +148,15 @@ <dd><p>The image.</p> </dd> </dl> -</div> -</div> -<div class="section" id="accessmutablepixels"> +</section> +</section> +<section id="accessmutablepixels"> <h1><a class="toc-backref" href="#id66">AccessMutablePixels</a></h1> -<div class="section" id="id5"> +<section id="id5"> <h2>Synopsis</h2> <pre class="literal-block"><a class="reference external" href="../api/types.html#pixelpacket">PixelPacket</a> *AccessMutablePixels( <a class="reference external" href="../api/types.html#image">Image</a> image );</pre> -</div> -<div class="section" id="id6"> +</section> +<section id="id6"> <h2>Description</h2> <p>AccessMutablePixels() returns the pixels associated with the last call to SetImagePixels() or GetImagePixels(). This is useful in order to access @@ -173,18 +173,18 @@ <dd><p>The image.</p> </dd> </dl> -</div> -</div> -<div class="section" id="acquirecacheviewpixels"> +</section> +</section> +<section id="acquirecacheviewpixels"> <h1><a class="toc-backref" href="#id67">AcquireCacheViewPixels</a></h1> -<div class="section" id="id7"> +<section id="id7"> <h2>Synopsis</h2> <pre class="literal-block">const <a class="reference external" href="../api/types.html#pixelpacket">PixelPacket</a> *AcquireCacheViewPixels( <a class="reference external" href="../api/types.html#viewinfo">ViewInfo</a> *view, const long x, const long y, const unsigned long columns, const unsigned long rows, <a class="reference external" href="../api/types.html#exceptioninfo">ExceptionInfo</a> *exception );</pre> -</div> -<div class="section" id="id8"> +</section> +<section id="id8"> <h2>Description</h2> <p>Method AcquireCacheViewPixels gets pixels from the in-memory or disk pixel cache as defined by the geometry parameters for read-only access. A @@ -211,15 +211,15 @@ <dd><p>Return any errors or warnings in this structure.</p> </dd> </dl> -</div> -</div> -<div class="section" id="acquirecacheviewindexes"> +</section> +</section> +<section id="acquirecacheviewindexes"> <h1><a class="toc-backref" href="#id68">AcquireCacheViewIndexes</a></h1> -<div class="section" id="id9"> +<section id="id9"> <h2>Synopsis</h2> <pre class="literal-block">const IndexPacket *AcquireCacheViewIndexes( const <a class="reference external" href="../api/types.html#viewinfo">ViewInfo</a> *view );</pre> -</div> -<div class="section" id="id10"> +</section> +<section id="id10"> <h2>Description</h2> <p>Method AcquireCacheViewIndexes returns read-only indexes associated with the specified view.</p> @@ -235,17 +235,17 @@ <dd><p>The address of a structure of type ViewInfo.</p> </dd> </dl> -</div> -</div> -<div class="section" id="acquireimagepixels"> +</section> +</section> +<section id="acquireimagepixels"> <h1><a class="toc-backref" href="#id69">AcquireImagePixels</a></h1> -<div class="section" id="id11"> +<section id="id11"> <h2>Synopsis</h2> <pre class="literal-block">const <a class="reference external" href="../api/types.html#pixelpacket">PixelPacket</a> *AcquireImagePixels( const <a class="reference external" href="../api/types.html#image">Image</a> *image, const long x, const long y, const unsigned long columns, const unsigned long rows, <a class="reference external" href="../api/types.html#exceptioninfo">ExceptionInfo</a> *exception );</pre> -</div> -<div class="section" id="id12"> +</section> +<section id="id12"> <h2>Description</h2> <p>AcquireImagePixels() obtains a pixel region for read-only access. If the region is successfully accessed, a pointer to it is returned, otherwise @@ -280,17 +280,17 @@ <dd><p>Return any errors or warnings in this structure.</p> </dd> </dl> -</div> -</div> -<div class="section" id="acquireonecacheviewpixel"> +</section> +</section> +<section id="acquireonecacheviewpixel"> <h1><a class="toc-backref" href="#id70">AcquireOneCacheViewPixel</a></h1> -<div class="section" id="id13"> +<section id="id13"> <h2>Synopsis</h2> <pre class="literal-block">MagickPassFail AcquireOneCacheViewPixel( const <a class="reference external" href="../api/types.html#viewinfo">ViewInfo</a> *view, <a class="reference external" href="../api/types.html#pixelpacket">PixelPacket</a> *pixel, const long x, const long y, <a class="reference external" href="../api/types.html#exceptioninfo">ExceptionInfo</a> *exception );</pre> -</div> -<div class="section" id="id14"> +</section> +<section id="id14">