diff options
| -rw-r--r-- | engines/cge2/bitmap.cpp | 20 | 
1 files changed, 12 insertions, 8 deletions
diff --git a/engines/cge2/bitmap.cpp b/engines/cge2/bitmap.cpp index 396610ad84..4d1fb6a043 100644 --- a/engines/cge2/bitmap.cpp +++ b/engines/cge2/bitmap.cpp @@ -53,8 +53,8 @@ Bitmap::Bitmap(CGE2Engine *vm, const char *fname) : _v(nullptr), _b(nullptr), _m  		warning("Workaround for wrong VBM name: 11oqlist-");  	} else  		strcpy(pat, fname); -	 -	strcpy(pat, addExt(pat).c_str()); + +	strcpy(pat, setExtension(pat, ".VBM").c_str());  	if (_vm->_resman->exist(pat)) {  		EncryptedStream file(_vm, pat); @@ -162,12 +162,16 @@ Bitmap &Bitmap::operator=(const Bitmap &bmp) {  	return *this;  } -Common::String Bitmap::addExt(const char *name) { -	Common::String fname; -	fname = Common::String::format("%s.VBM", name); -	if (fname.size() >= kMaxPath) -		error("Bitmap's filename is too long %s", name); -	return fname; +// Blatant rip from hopkins engine where it's ripped from gob engine. Hi DrMcCoy, hi Strangerke! ;> +Common::String Bitmap::setExtension(const Common::String &str, const Common::String &ext) { +	if (str.empty()) +		return str; + +	const char *dot = strrchr(str.c_str(), '.'); +	if (dot) +		return Common::String(str.c_str(), dot - str.c_str()) + ext; + +	return str + ext;  }  BitmapPtr Bitmap::code(uint8 *map) {  | 
