[Scummvm-tracker] [ScummVM] #9780: SCI: LSL6HIRES-CD: Crash when dialing phone in Larry's room

Colin Snover trac at scummvm.org
Sun May 14 20:46:26 CEST 2017


#9780: SCI: LSL6HIRES-CD: Crash when dialing phone in Larry's room
-----------------------------------+-------------------------
  Reporter:  Mataniko              |      Owner:  (none)
      Type:  defect                |     Status:  new
  Priority:  normal                |  Component:  Engine: SCI
Resolution:                        |   Keywords:  sci32
      Game:  Leisure Suit Larry 6  |
-----------------------------------+-------------------------

Comment (by csnover):

 Just to recap, while I am working on a more ideal solution than to just
 ignore name selectors in `SegManager::getObjectName` that point to objects
 in `CloneTable`:

 In LSL6hires there is an unnamed instance of `LarryTalker` in script 610.
 The `name` selector for this unnamed instance is set by game scripts to a
 reference to a dynamically created `Str` object.

 When parts of the engine call `getObjectName` on this unnamed instance, an
 invalid dereference error occurs because `getObjectName` expects that the
 name property is either null or points to a string (either from a `Script`
 or from `ArrayTable`), but in this case it is pointing to an object in
 `CloneTable`.

 Since the purpose of `getObjectName` is really to identify objects by
 their original names (as defined in source scripts), I am working on
 changing the way that retrieving the object’s name reference works so that
 it does not get changed at runtime. (Currently, the name selector is read
 out of the object’s `_variables`, so when a game script sets its name
 selector, `getObjectName` gets the new one.)

 This change should also allow us to get rid of the Torin script 64000
 workaround in `getObjectName`, since that was caused by a similar problem
 (a File object with its `name` set to a dynamic string, which was deleted
 while the File object was still active).

 One (temporary) downside of this change will be that since workarounds
 rely on object names, some of them may need to be fixed up since they
 could be matching a dynamic name value which will no longer exist.

--
Ticket URL: <https://bugs.scummvm.org/ticket/9780#comment:4>
ScummVM <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list