Need for msInit() and msFinish()...

Frank Warmerdam warmerdam at POBOX.COM
Mon Feb 13 12:07:09 EST 2006

Steve Lime wrote:
> I think I'd just default to calling it msCleanup if that name is already out
> there and being used (although I like msFinish better ;-) ). I don't believe
> msCleanup is being exposed to MapScript though.


It is declared in map.h and I have confirmed that it is available
in Python mapscript as "mapscript.msCleanup()".

>> Can you avoid msInit() by having the geos interface do the initialization
>> the first time it is entered?
> Tht's how the C++ interface works but that was with our own global factory.
> I don't know how to detect that the library has already been initialized. Hopefully
> repeated calls to GEOSInit() are ok.

Well, there is always the hacky:

    static int bInitialized = FALSE;

    if( !bInitialized )
         bInitialized = TRUE;

at some suitable point.

>> I wonder if we are going to have any conflicts with GDAL/OGR also doing
>> GEOS init/cleanup stuff.
> Where is the GDAL/OGR GEOS cleanup happening? msCleanup?

msCleanup() calls the GDAL/OGR cleanup functions which ought to call
the GEOS cleanup function, though I'm pretty sure I don't yet.

>>> Hence the need. We could hide calls in the mapfile load/free code, but there are 
>>> some cases where MapScript scripts don't need a mapfile so we'd need to expose 
>>> 'em for those cases.
>> I don't think we ought to cleanup geos just because a mapfile is
>> destroyed.  And of course sometimes we use many maps in a single
>> run.
> I agree. If folks got in the habit of starting each script with msInit() and ending with
> msCleanup() that would be excellent. However, that would break every MapScript
> script out there which would make this a 5.0 type change.

Sean pointed out that the python mapscript already calls msSetup()
in the Python %init block, so it is automatic for Python.  He is
setting python mapscript to register an "atexit" handler for msCleanup().
I believe this auto-setup stuff needs to be implemented custom for each
swig wrapped language to make it automatic.

Best regards,
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at
light and sound - activate the windows |
and watch the world go round - Rush    | Geospatial Programmer for Rent

More information about the mapserver-dev mailing list