Skip to content

Commit b250513

Browse files
committed
Fix invalid string management [thanks to mtheall for pointing this out]
1 parent 2fddf6a commit b250513

2 files changed

Lines changed: 11 additions & 10 deletions

File tree

source/picasso.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ enum
101101

102102
struct Uniform
103103
{
104-
const char* name;
104+
std::string name;
105105
int pos, size;
106106
int type;
107107
};

source/picasso_frontend.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ int main(int argc, char* argv[])
161161
for (int i = 0; i < g_uniformCount; i ++)
162162
{
163163
Uniform& u = g_uniformTable[i];
164-
size_t l = strlen(u.name)+1;
164+
size_t l = u.name.length()+1;
165165
f.WriteWord(sp); sp += l;
166166
f.WriteHword(u.pos-0x10);
167167
f.WriteHword(u.pos+u.size-1-0x10);
@@ -176,9 +176,9 @@ int main(int argc, char* argv[])
176176
// Write symbols
177177
for (int i = 0; i < g_uniformCount; i ++)
178178
{
179-
const char* u = g_uniformTable[i].name;
180-
size_t l = strlen(u)+1;
181-
f.WriteRaw(u, l);
179+
std::string& u = g_uniformTable[i].name;
180+
size_t l = u.length()+1;
181+
f.WriteRaw(u.c_str(), l);
182182
}
183183

184184
if (hFile)
@@ -196,18 +196,19 @@ int main(int argc, char* argv[])
196196
for (int i = 0; i < g_uniformCount; i ++)
197197
{
198198
Uniform& u = g_uniformTable[i];
199+
const char* name = u.name.c_str();
199200
if (u.type == UTYPE_FVEC)
200-
fprintf(f2, "#define %s_FVEC_%s 0x%02X\n", prefix, u.name, u.pos-0x20);
201+
fprintf(f2, "#define %s_FVEC_%s 0x%02X\n", prefix, name, u.pos-0x20);
201202
else if (u.type == UTYPE_IVEC)
202-
fprintf(f2, "#define %s_IVEC_%s 0x%02X\n", prefix, u.name, u.pos-0x80);
203+
fprintf(f2, "#define %s_IVEC_%s 0x%02X\n", prefix, name, u.pos-0x80);
203204
else if (u.type == UTYPE_BOOL)
204205
{
205206
if (u.size == 1)
206-
fprintf(f2, "#define %s_FLAG_%s BIT(%d)\n", prefix, u.name, u.pos-0x88);
207+
fprintf(f2, "#define %s_FLAG_%s BIT(%d)\n", prefix, name, u.pos-0x88);
207208
else
208-
fprintf(f2, "#define %s_FLAG_%s(_n) BIT(%d+(_n))\n", prefix, u.name, u.pos-0x88);
209+
fprintf(f2, "#define %s_FLAG_%s(_n) BIT(%d+(_n))\n", prefix, name, u.pos-0x88);
209210
}
210-
fprintf(f2, "#define %s_ULEN_%s %d\n", prefix, u.name, u.size);
211+
fprintf(f2, "#define %s_ULEN_%s %d\n", prefix, name, u.size);
211212
}
212213

213214
fclose(f2);

0 commit comments

Comments
 (0)