fixed regression in the texture resource management
authorJohn Tsiombikas <nuclear@mutantstargoat.com>
Thu, 1 Dec 2016 02:03:58 +0000 (04:03 +0200)
committerJohn Tsiombikas <nuclear@mutantstargoat.com>
Thu, 1 Dec 2016 02:03:58 +0000 (04:03 +0200)
src/texture.cc

index c556d27..b3c17fe 100644 (file)
@@ -470,15 +470,24 @@ TextureSet::TextureSet()
 
 Texture *TextureSet::get_texture(const char *name, TextureType type) const
 {
-       std::map<std::string, Texture*>::const_iterator iter = data.find(name);
+       char *fname;
+       int nsize = datamap_path_size(name);
+       if(nsize) {
+               fname = (char*)alloca(nsize);
+               datamap_lookup(name, fname, nsize);
+       } else {
+               fname = (char*)name;
+       }
+
+       std::map<std::string, Texture*>::const_iterator iter = data.find(fname);
        if(iter != data.end()) {
                return iter->second;
        }
 
        Texture *res = create();
-       data[name] = res;
+       data[fname] = res;
        res->create_default(type);
-       resman_lookup(rman, name, res);
+       resman_lookup(rman, fname, res);
        return res;
 }
 
@@ -491,17 +500,8 @@ Texture *TextureSet::create_tex()
 
 bool TextureSet::load_tex(Texture *tex, const char *fname)
 {
-       char *pathbuf;
-       int nsize = datamap_path_size(fname);
-       if(nsize) {
-               pathbuf = (char*)alloca(nsize);
-               datamap_lookup(fname, pathbuf, nsize);
-       } else {
-               pathbuf = (char*)fname;
-       }
-
        Image *img = new Image;
-       if(!img->load(pathbuf)) {
+       if(!img->load(fname)) {
                delete img;
                return false;
        }