Re: Would like some help fixing bug in TclMagick
David Welton <[email protected]>
| Newsgroups | gmane.comp.video.graphicsmagick.help |
|---|---|
| Message-ID | <CA+b9R_sHYD0sVGOkjqcryykkQ-G88xir1nb5pfrLTKy1GQVxvA@mail.gmail.com> |
You could probably ask around the broader Tcl community for some help as well. On Fri, Apr 14, 2017 at 9:28 AM, Computer Jock <[email protected]> wrote: > I hope there is still some life to this project... > > I've been trying to get TclMagick working on win7x64. Tcl's native image > manipulation is almost non-existent and, while there are a few other > extensions available (imgtools, tksvg, ...), none approach the > capabilities of GraphicsMagick. > > I've managed to compile and link (no thanks to libtool) using Msys2's > 64-bit MinGW gcc tool chain. > > I've got one bug that I'd like some help fixing, but first of all here > are some > of the issues I've fixed. > > 1) I had to replace unix/m4/tcl.m4 with a >much< more current version. I > used this from the latest Tcl distribution: > tcl8.6.6/pkgs/sqlite3.13.0/tclconfig/tcl.m4 > > I then had to rerun genconf.sh > > 2) I fixed two bugs (one remains): > > --- GraphicsMagick-1.3.25/TclMagick/generic/TclMagick.c.orig 2016-09-05 > 17:45:26.803926700 -0500 > +++ GraphicsMagick-1.3.25/TclMagick/generic/TclMagick.c 2017-04-13 > 23:47:43.006038500 -0500 > @@ -146,7 +146,7 @@ > * create one from the MagickWand address > */ > if( name == NULL ) { > - sprintf(idString, "magick%lX", (unsigned long)wandPtr ); > + sprintf(idString, "magick%p", wandPtr ); > name = idString; > } > > @@ -449,7 +449,7 @@ > "resourceType", 0, &resourceIdx) != TCL_OK) { > return TCL_ERROR; > } > - if (objc == 3) { > + if (objc == 4) { > /* > * Set channel depth > */ > > 3) The last (that I know of so far) occurs when there is an exception > while using a wand. After reporting the error, the exception has to be > cleared or the wand becomes unusable and constantly reports the same > error message. > > I dug out a really old archive I had from 2006. I had gotten TclMagick > working on FreeBSD. [The above bugs, and this one, are still present > today -- I guess that no one uses TclMagick]. > > In version 0.45 of TclMagick linking against ImageMagick 6.2.8, I added > a call: > > MagickClearException(wandPtr); > > This was at the end of MyMagickError() which now appears in TclMagick.h. > Here's the code in TclMagick.h: > > : > if( description != NULL ) { > MagickRelinquishMemory(description); > } > ==> MagickClearException(wandPtr); <== this or equivalent needs to be added > /* > * if(severity < ErrorException) --> warning > * return TCL_OK ??? > */ > return TCL_ERROR; > : > > There is no longer a MagickClearException() nor can I find an > equivalent. WandPtr is an opaque pointer and there is no private header > I can #include to define it. The actual wand structure is defined within > wand/magick_wand.c. I had tried > > DestroyExceptionInfo(&wandPtr->exception); > GetExceptionInfo(&wandPtr->exception); > > but, of course, that fails since WandPtr is an opaque pointer. > > I could just copy the declaration of struct _MagickWand but if there's > an alternative I'd like to do things the "right" way. > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Graphicsmagick-help mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/graphicsmagick-help -- David N. Welton http://www.dedasys.com/ ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot