diff options
| -rw-r--r-- | engines/sherlock/fixed_text.cpp | 39 | ||||
| -rw-r--r-- | engines/sherlock/fixed_text.h | 1 | 
2 files changed, 24 insertions, 16 deletions
| diff --git a/engines/sherlock/fixed_text.cpp b/engines/sherlock/fixed_text.cpp index 7594fc872b..2e0ae4a6fb 100644 --- a/engines/sherlock/fixed_text.cpp +++ b/engines/sherlock/fixed_text.cpp @@ -250,28 +250,31 @@ static const Common::String fixedTextES_ActionUse[] = {  	"Las puertas no fuman"  }; +#define FIXEDTEXT_GETCOUNT(_name_) sizeof(_name_) / sizeof(Common::String) +#define FIXEDTEXT_ENTRY(_name_)    _name_, FIXEDTEXT_GETCOUNT(_name_) +  static const FixedTextActionEntry fixedTextEN_Actions[] = { -	{ fixedTextEN_ActionOpen }, -	{ fixedTextEN_ActionClose }, -	{ fixedTextEN_ActionMove }, -	{ fixedTextEN_ActionPick }, -	{ fixedTextEN_ActionUse } +	{ FIXEDTEXT_ENTRY(fixedTextEN_ActionOpen) }, +	{ FIXEDTEXT_ENTRY(fixedTextEN_ActionClose) }, +	{ FIXEDTEXT_ENTRY(fixedTextEN_ActionMove) }, +	{ FIXEDTEXT_ENTRY(fixedTextEN_ActionPick) }, +	{ FIXEDTEXT_ENTRY(fixedTextEN_ActionUse) }  };  static const FixedTextActionEntry fixedTextDE_Actions[] = { -	{ fixedTextDE_ActionOpen }, -	{ fixedTextDE_ActionClose }, -	{ fixedTextDE_ActionMove }, -	{ fixedTextDE_ActionPick }, -	{ fixedTextDE_ActionUse } +	{ FIXEDTEXT_ENTRY(fixedTextDE_ActionOpen) }, +	{ FIXEDTEXT_ENTRY(fixedTextDE_ActionClose) }, +	{ FIXEDTEXT_ENTRY(fixedTextDE_ActionMove) }, +	{ FIXEDTEXT_ENTRY(fixedTextDE_ActionPick) }, +	{ FIXEDTEXT_ENTRY(fixedTextDE_ActionUse) }  };  static const FixedTextActionEntry fixedTextES_Actions[] = { -	{ fixedTextES_ActionOpen }, -	{ fixedTextES_ActionClose }, -	{ fixedTextES_ActionMove }, -	{ fixedTextES_ActionPick }, -	{ fixedTextES_ActionUse } +	{ FIXEDTEXT_ENTRY(fixedTextES_ActionOpen) }, +	{ FIXEDTEXT_ENTRY(fixedTextES_ActionClose) }, +	{ FIXEDTEXT_ENTRY(fixedTextES_ActionMove) }, +	{ FIXEDTEXT_ENTRY(fixedTextES_ActionPick) }, +	{ FIXEDTEXT_ENTRY(fixedTextES_ActionUse) }  };  // ========================================= @@ -307,7 +310,11 @@ const Common::String FixedText::getText(FixedTextId fixedTextId) {  const Common::String FixedText::getActionMessage(FixedTextActionId actionId, int messageIndex) {  	assert(actionId >= 0); -	return _curLanguageEntry->actionArray[actionId].fixedTextArray[messageIndex]; +	assert(messageIndex >= 0); +	const FixedTextActionEntry *curActionEntry = &_curLanguageEntry->actionArray[actionId]; + +	assert(messageIndex < curActionEntry->fixedTextArrayCount); +	return curActionEntry->fixedTextArray[messageIndex];  }  } // End of namespace Sherlock diff --git a/engines/sherlock/fixed_text.h b/engines/sherlock/fixed_text.h index 7c4a7a877b..e6a85075ba 100644 --- a/engines/sherlock/fixed_text.h +++ b/engines/sherlock/fixed_text.h @@ -69,6 +69,7 @@ enum FixedTextActionId {  struct FixedTextActionEntry {  	const Common::String *fixedTextArray; +	int   fixedTextArrayCount;  };  struct FixedTextLanguageEntry { | 
