msDrawMap(): Map parent object is null
Umberto Nicoletti
umberto.nicoletti at GMAIL.COM
Tue Jun 5 23:45:10 PDT 2007
It's fixed in svn backed by python unit tests.
Umberto
On 6/5/07, Tamas Szekeres <szekerest at gmail.com> 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 <rodrigo.andrade at digitro.com.br>:
> > 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
> >
> >
> >
> > --
> > *Rodrigo Del C. Andrade*
> > /Programador/
> > /SIC - SSE - Soluções Segurança Pública/
> >
> > *DÍGITRO TECNOLOGIA*
> > *E-mail:* rodrigo.andrade at digitro.com.br
> > <mailto:rodrigo.andrade at digitro.com.br>
> > *Fone:* +55 48 3281-7314 / +55 48 3281-7000
> > *Fax:* +55 48 3281-7299
> > *Site:* www.digitro.com <http://www.digitro.com>
> >
>
More information about the MapServer-users
mailing list