Comment 9 for bug 1226558

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

No, I don't think so.

Am 20.09.2013 16:24, schrieb Chris:
> 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
>>