Fix invalid string management [thanks to mtheall for pointing this out]

This commit is contained in:
fincs 2015-03-06 21:16:00 +01:00
parent 2fddf6a0be
commit b250513be0
2 changed files with 11 additions and 10 deletions

View File

@ -101,7 +101,7 @@ enum
struct Uniform struct Uniform
{ {
const char* name; std::string name;
int pos, size; int pos, size;
int type; int type;
}; };

View File

@ -161,7 +161,7 @@ int main(int argc, char* argv[])
for (int i = 0; i < g_uniformCount; i ++) for (int i = 0; i < g_uniformCount; i ++)
{ {
Uniform& u = g_uniformTable[i]; Uniform& u = g_uniformTable[i];
size_t l = strlen(u.name)+1; size_t l = u.name.length()+1;
f.WriteWord(sp); sp += l; f.WriteWord(sp); sp += l;
f.WriteHword(u.pos-0x10); f.WriteHword(u.pos-0x10);
f.WriteHword(u.pos+u.size-1-0x10); f.WriteHword(u.pos+u.size-1-0x10);
@ -176,9 +176,9 @@ int main(int argc, char* argv[])
// Write symbols // Write symbols
for (int i = 0; i < g_uniformCount; i ++) for (int i = 0; i < g_uniformCount; i ++)
{ {
const char* u = g_uniformTable[i].name; std::string& u = g_uniformTable[i].name;
size_t l = strlen(u)+1; size_t l = u.length()+1;
f.WriteRaw(u, l); f.WriteRaw(u.c_str(), l);
} }
if (hFile) if (hFile)
@ -196,18 +196,19 @@ int main(int argc, char* argv[])
for (int i = 0; i < g_uniformCount; i ++) for (int i = 0; i < g_uniformCount; i ++)
{ {
Uniform& u = g_uniformTable[i]; Uniform& u = g_uniformTable[i];
const char* name = u.name.c_str();
if (u.type == UTYPE_FVEC) if (u.type == UTYPE_FVEC)
fprintf(f2, "#define %s_FVEC_%s 0x%02X\n", prefix, u.name, u.pos-0x20); fprintf(f2, "#define %s_FVEC_%s 0x%02X\n", prefix, name, u.pos-0x20);
else if (u.type == UTYPE_IVEC) else if (u.type == UTYPE_IVEC)
fprintf(f2, "#define %s_IVEC_%s 0x%02X\n", prefix, u.name, u.pos-0x80); fprintf(f2, "#define %s_IVEC_%s 0x%02X\n", prefix, name, u.pos-0x80);
else if (u.type == UTYPE_BOOL) else if (u.type == UTYPE_BOOL)
{ {
if (u.size == 1) if (u.size == 1)
fprintf(f2, "#define %s_FLAG_%s BIT(%d)\n", prefix, u.name, u.pos-0x88); fprintf(f2, "#define %s_FLAG_%s BIT(%d)\n", prefix, name, u.pos-0x88);
else else
fprintf(f2, "#define %s_FLAG_%s(_n) BIT(%d+(_n))\n", prefix, u.name, u.pos-0x88); fprintf(f2, "#define %s_FLAG_%s(_n) BIT(%d+(_n))\n", prefix, name, u.pos-0x88);
} }
fprintf(f2, "#define %s_ULEN_%s %d\n", prefix, u.name, u.size); fprintf(f2, "#define %s_ULEN_%s %d\n", prefix, name, u.size);
} }
fclose(f2); fclose(f2);