summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
c3f59af)
Before, level filenames in the level file info structure (members for
"basename" and "filename") were only handled as references to the
basename/filename strings allocated elsewhere, so if those strings
changed, the references in the level file info structure also pointed
to those changed strings. When determining filenames for both level
files and corresponding level templates, references to level filenames
were replaced by references to template filenames, which resulted in
unexpected/wrong behaviour.
Now, these level filenames are handled as copies of the strings, so if
the strings change, the string copies still stay the same.
level_file_info->nr = 0;
level_file_info->type = LEVEL_FILE_TYPE_UNKNOWN;
level_file_info->packed = FALSE;
level_file_info->nr = 0;
level_file_info->type = LEVEL_FILE_TYPE_UNKNOWN;
level_file_info->packed = FALSE;
- level_file_info->basename = NULL;
- level_file_info->filename = NULL;
+
+ setString(&level_file_info->basename, NULL);
+ setString(&level_file_info->filename, NULL);
}
int getMappedElement_SB(int, boolean);
}
int getMappedElement_SB(int, boolean);
{
lfi->type = type;
lfi->packed = FALSE;
{
lfi->type = type;
lfi->packed = FALSE;
- lfi->basename = getSingleLevelBasename(lfi->nr, lfi->type);
- lfi->filename = getLevelFilenameFromBasename(lfi->basename);
+
+ setString(&lfi->basename, getSingleLevelBasename(lfi->nr, lfi->type));
+ setString(&lfi->filename, getLevelFilenameFromBasename(lfi->basename));
lfi->type = type;
lfi->packed = FALSE;
lfi->type = type;
lfi->packed = FALSE;
- lfi->basename = basename;
- lfi->filename = getLevelFilenameFromBasename(lfi->basename);
+
+ setString(&lfi->basename, basename);
+ setString(&lfi->filename, getLevelFilenameFromBasename(lfi->basename));
}
static void setLevelFileInfo_PackedLevelFilename(struct LevelFileInfo *lfi,
}
static void setLevelFileInfo_PackedLevelFilename(struct LevelFileInfo *lfi,
{
lfi->type = type;
lfi->packed = TRUE;
{
lfi->type = type;
lfi->packed = TRUE;
- lfi->basename = getPackedLevelBasename(lfi->type);
- lfi->filename = getLevelFilenameFromBasename(lfi->basename);
+
+ setString(&lfi->basename, getPackedLevelBasename(lfi->type));
+ setString(&lfi->filename, getLevelFilenameFromBasename(lfi->basename));
}
static int getFiletypeFromID(char *filetype_id)
}
static int getFiletypeFromID(char *filetype_id)
getSingleLevelBasename(-1));
/* replace local level template filename with global template filename */
getSingleLevelBasename(-1));
/* replace local level template filename with global template filename */
- lfi->filename = getGlobalLevelTemplateFilename();
+ setString(&lfi->filename, getGlobalLevelTemplateFilename());
/* no fallback if template file not existing */
return;
/* no fallback if template file not existing */
return;
level_file_info.nr = 0; /* unknown level number */
level_file_info.type = LEVEL_FILE_TYPE_RND; /* no others supported yet */
level_file_info.nr = 0; /* unknown level number */
level_file_info.type = LEVEL_FILE_TYPE_RND; /* no others supported yet */
- level_file_info.filename = filename;
+
+ setString(&level_file_info.filename, filename);
LoadLevelFromFileInfo(level, &level_file_info, FALSE);
}
LoadLevelFromFileInfo(level, &level_file_info, FALSE);
}