diff options
| author | Filippos Karapetis | 2013-10-30 09:42:28 +0200 | 
|---|---|---|
| committer | Filippos Karapetis | 2013-10-30 09:42:56 +0200 | 
| commit | cc3475598621b0dc294b85ff18edb803c386abee (patch) | |
| tree | 1664821a2df53c3ca7363f7be62c4dad38300343 | |
| parent | 3e6a1422e31f9ccdc6f6acd7def9e246d1b6f0e6 (diff) | |
| download | scummvm-rg350-cc3475598621b0dc294b85ff18edb803c386abee.tar.gz scummvm-rg350-cc3475598621b0dc294b85ff18edb803c386abee.tar.bz2 scummvm-rg350-cc3475598621b0dc294b85ff18edb803c386abee.zip  | |
SCI: Fix script bug #3615119 - "SCI: Crazy Nick Laura Bow - Uninitialized read error 2"
| -rw-r--r-- | engines/sci/engine/seg_manager.cpp | 10 | ||||
| -rw-r--r-- | engines/sci/engine/workarounds.cpp | 1 | 
2 files changed, 9 insertions, 2 deletions
diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index 97e33f256b..a059bee74e 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -262,8 +262,14 @@ const char *SegManager::getObjectName(reg_t pos) {  	const char *name = 0;  	if (nameReg.getSegment())  		name  = derefString(nameReg); -	if (!name) -		return "<invalid name>"; +	if (!name) { +		// Crazy Nick Laura Bow is missing some object names needed for the static +		// selector vocabulary +		if (g_sci->getGameId() == GID_CNICK_LAURABOW && pos == make_reg(1, 0x2267)) +			return "Character"; +		else +			return "<invalid name>"; +	}  	return name;  } diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 764a080c82..16437d0918 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -55,6 +55,7 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = {  	{ GID_CASTLEBRAIN,   280,   280,  0,         "programmer", "dispatchEvent",  -1,    0, { WORKAROUND_FAKE, 0xf } }, // pressing 'q' on the computer screen in the robot room, and closing the help dialog that pops up (bug #3039656). Moves the cursor to the view with the ID returned (in this case, the robot hand)  	{ GID_CNICK_KQ,       -1,     0,  1,          "Character", "say",            -1,   -1, { WORKAROUND_FAKE,   0 } }, // checkers/backgammon, like in hoyle 3 - temps 504 and 505 - bug #3606025  	{ GID_CNICK_KQ,       -1,   700,  0,           "gcWindow", "open",           -1,   -1, { WORKAROUND_FAKE,   0 } }, // when entering the control menu, like in hoyle 3 +	{ GID_CNICK_LAURABOW, -1,     0,  1,          "Character", "say",            -1,   -1, { WORKAROUND_FAKE,   0 } }, // Yatch, like in hoyle 3 - temps 504 and 505 - bug #3615119  	{ GID_CNICK_LAURABOW, -1,   700,  0,                 NULL, "open",           -1,   -1, { WORKAROUND_FAKE,   0 } }, // when entering control menu - bug #3615118 (same as the gcWindow workaround for Hoyle 3)  	{ GID_CNICK_LAURABOW,100,   110,  0,                 NULL, "doit",           -1,   -1, { WORKAROUND_FAKE,   0 } }, // when changing the "Dominoes per hand" setting - bug #3615130  	{ GID_CNICK_LONGBOW,   0,     0,  0,          "RH Budget", "init",           -1,    1, { WORKAROUND_FAKE,   0 } }, // when starting the game  | 
