Comment 8 for bug 1226558

Revision history for this message
Chris (chrismudlet) wrote : Re: [Mudlet-makers] [Bug 1226558] [NEW] getRoom in TArea causes seg fault on map creation

Heiko,

Do you have any uncommitted work to the mapper that would make this a waste
of time to pursue at the moment?

On Thu, Sep 19, 2013 at 5:45 PM, Vadim Peretokin <email address hidden>wrote:

> Yeah, I am in agreement there - I wouldn't go down the path of all in one.
> We could add it for conveniences sake - for example we have the all in one
> function to creating miniconsoles, but we also have the option of doing it
> step by step. However with Lua's ordered arguments (unless you're using
> tables, which does not make for an efficient API) then tacking everything
> to the end of a function becomes unwieldy.
>
> I've never used area 0 really. It's mostly annoying in the fact that it
> shows up in the list of areas the map has and in the mapper widget as a
> blank entry. I'd support hiding it from the API (partially - so we don't
> see it, but can use it) and the user (not showing in the mapper widget) and
> making use of it as the temporary void storage.
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1226558
>
> Title:
> getRoom in TArea causes seg fault on map creation
>
> Status in Mudlet the MUD client:
> New
>
> Bug description:
> Creating a new map with this code on the latest development branch
> causes this backtrace:
>
> 0 TArea::fast_ausgaengeBestimmen TArea.cpp 168 0x5128bb
> 1 TMap::setExit TMap.cpp 304 0x5281ca
> 2 TLuaInterpreter::setExit TLuaInterpreter.cpp 6650
> 0x492075
> 3 ?? C:\mingw32\lib\lua51.dll 0x66d862e0
> 4 ?? C:\mingw32\lib\lua51.dll 0x66d8ffa6
> 5 ?? C:\mingw32\lib\lua51.dll 0x66d866e0
> 6 ?? C:\mingw32\lib\lua51.dll 0x66d81590
> 7 ?? C:\mingw32\lib\lua51.dll 0x66d85ad6
> 8 ?? C:\mingw32\lib\lua51.dll 0x66d86843
> 9 ?? C:\mingw32\lib\lua51.dll 0x66d82870
> 10 TLuaInterpreter::compile TLuaInterpreter.cpp 9649
> 0x49ce7a
> 11 TScript::compileScript TScript.cpp 150 0x4b04d7
> 12 TScript::setScript TScript.cpp 143 0x4b048e
> 13 dlgTriggerEditor::saveScript dlgTriggerEditor.cpp 4282
> 0x456ad9
> 14 dlgTriggerEditor::slot_saveScriptAfterEdit
> dlgTriggerEditor.cpp 4178 0x456799
> 15 dlgTriggerEditor::slot_save_edit dlgTriggerEditor.cpp
> 6932 0x46a642
> 16 dlgTriggerEditor::qt_static_metacall moc_dlgTriggerEditor.cpp
> 509 0x57ecd9
> 17 QMetaObject::activate qobject.cpp 3479 0x4c94cd0
> 18 QMetaObject::activate qobject.cpp 3354 0x4c94672
> 19 QAction::triggered moc_qaction.cpp 356 0x11674669
> 20 QAction::activate qaction.cpp 1175 0x11673c1e
> ... <More>
>
>
> code:
>
> -------------------------------------------------
> -- Put your Lua functions here. --
> -- --
> -- Note that you can also use external Scripts --
> -------------------------------------------------
> function makeMap()
> id = 0
> for i=0,100 do
> for j=0, 100 do
> addRoom(id)
> --setRoomArea(id,0) --uncomment this and remove below call
> to avoid seg faults
> setRoomName(id, tostring(id))
> setRoomCoordinates(id, i, j, 0)
> setExit(id-1,id,1)
> setExit(id,id-1,2)
> setRoomArea(id,0)
> id = id+1
> end
> end
> end
>
> function makeLabels()
> id=1
> for i=0,100 do
> for j=0, 100 do
> --display(id)
> x,y,z = getRoomCoordinates(id)
> createMapLabel(0,tostring(id),x,y,z,0,255,0,0,0,0)
> id = id+1
> end
> end
> end
>
> --makeMap()
> --makeLabels()
> centerview(1)
>
> uncomment makeMap and it crashes. It fails when id is 1 as well, so it
> isn't because of the i-1 setExit bit. It's caused by mpRoomDB not
> being initialized because there is no area created. Even post
> creation, the room needs to be assigned to an area first before any
> calls to mpRoomDB are called, else it will seg fault. It seems like we
> need some 'void' area that has no name and is just an abyss for rooms
> waiting to be allocated to avoid breaking scripts.
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/mudlet/+bug/1226558/+subscriptions
>