I tested rev 7176, and it's a confirmed fix.
   Thanks!

   Regards,

   Rodrigo


Umberto Nicoletti wrote:
It's fixed in svn backed by python unit tests.

Umberto

On 6/5/07, Tamas Szekeres <[EMAIL PROTECTED]> wrote:
Rodrigo,

Your analysis was pretty exhaustive :-)

Formery initLayer was responsible to set up the back reference in the
layer object. As of the RFC24 related changes the
initLayer/msCopyLayer were replaced with a simple assignment of the
reference but indeed I cannot see the assignment of the parent
reference a the layer object.

I think Umberto will correct this issue easily.

In the meantime you can try something like this

Index: mapobject.c
===================================================================
--- mapobject.c (revision 6161)
+++ mapobject.c (working copy)
@@ -472,6 +472,7 @@
         //msCopyLayer((GET_LAYER(map, nIndex)), layer);
        GET_LAYER(map, nIndex)=layer;
         GET_LAYER(map, nIndex)->index = nIndex;
+        layer->map = map;

         /* adjust layers drawing order */
         for (i=map->numlayers; i>nIndex; i--) {


Best regards,

Tamas


2007/6/5, Rodrigo Del C. Andrade <[EMAIL PROTECTED]>:
>     Hello dear list, I wish it had been a longer while before I had to
> bother y'all again, but I am pulling my hairs out on this one.
>
>     <deepBreath>
> Here it goes: using java mapscript rev 6168 from svn, whenever I try
> to activate a specific layer, I get this:
>
>     msDrawMap(): Image handling error. Failed to draw layer named
> 'Layer_Tematica_RJ_145'.;: The map parent object is null.
>     Tomcat does not crash, so I think this could be a good sign.
>
> Digging trough mapserver code I was unable to find this message and > look at its context to get a better idea of whats going on, so debuging
> my code step by step I came up with the following facts:
>
>     1- the layer where it crashes is the 68th in the line. Previously
> layers where drawn, both inline and non-inline ones.
>     2 - this layer is a clone from a layer that exists in the mapfile.
> It is declared with:
>
>                 layerObj layer =
> map.getLayerByName(nameFromConstant).cloneLayer();
>                layer.setName("blahblahblah");
>                try{
>                     valores = mapa.insertLayer(layerValores, -1);
>                 }catch(Exception e){
>                     throw new DGTKeyException("error.maxNumLayers",
> e.getMessage());
>                }
>
> 3 - It only crashes when this layer is turned on. Map is shown with > this layer off when user first logs and it can be turned on from a tree
> widget. If he does, boom.
>     4 - Just before calling map.draw(), both map.getLayerByName(name)
> and map.getLayer(index) return the right layer. whem map.draw() is
> called, boom.
> 5 - Suspecting of the clonage bits mixed with the changes to object
> parenthood Umberto implemented, I modified make threadtests to clone a
> bunch of layers, insert them into the map, juggle them around a bit like
> happens in my app and then call map.draw() in the hopes of reproducing
> the error. No go. The test works normally and no errors occur. :(
>     and finally 6 - reverting to mapserver 4.10.1 "fixes" it.
>
>     Any clues?
>
>     Thanks!
>
>     Rodrigo
>

Reply via email to