char *getPath2(char *path1, char *path2)
{
#if defined(PLATFORM_ANDROID)
- // workaround for reading from APK assets directory -- skip leading "./"
+ // workaround for reading from assets directory -- skip "." subdirs in path
if (strEqual(path1, "."))
return getStringCopy(path2);
+ else if (strEqual(path2, "."))
+ return getStringCopy(path1);
#endif
return getStringCat2WithSeparator(path1, path2, STRING_PATH_SEPARATOR);
char *getPath3(char *path1, char *path2, char *path3)
{
#if defined(PLATFORM_ANDROID)
- // workaround for reading from APK assets directory -- skip leading "./"
+ // workaround for reading from assets directory -- skip "." subdirs in path
if (strEqual(path1, "."))
return getStringCat2WithSeparator(path2, path3, STRING_PATH_SEPARATOR);
+ else if (strEqual(path2, "."))
+ return getStringCat2WithSeparator(path1, path3, STRING_PATH_SEPARATOR);
+ else if (strEqual(path3, "."))
+ return getStringCat2WithSeparator(path1, path2, STRING_PATH_SEPARATOR);
#endif
return getStringCat3WithSeparator(path1, path2, path3, STRING_PATH_SEPARATOR);
node_new->key = getStringCopy(key);
node_new->content = content;
node_new->next = *node_first;
+
+ if (*node_first)
+ (*node_first)->prev = node_new;
+
*node_first = node_new;
}
if (strEqual((*node_first)->key, key))
{
checked_free((*node_first)->key);
+
if (destructor_function)
destructor_function((*node_first)->content);
+
+ if ((*node_first)->next)
+ (*node_first)->next->prev = (*node_first)->prev;
+
+ checked_free(*node_first);
+
*node_first = (*node_first)->next;
}
else