git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2442
4a8a32a2-be11-0410-ad9d-
d568d2c75423
void
shash_add (hTab ** h, const char *szKey, const char *szValue)
{
void
shash_add (hTab ** h, const char *szKey, const char *szValue)
{
- /* First, delete any that currently exist */
- hTabDeleteByKey (h, key, szKey, _compare);
+
+ /* Find value of the item */
+ val = (char *)hTabFindByKey(*h, key, szKey, _compare);
+ /* Delete any that currently exist */
+ hTabDeleteByKey(h, key, szKey, _compare);
+ /* Deallocate old value in not NULL */
+ if (val != NULL)
+ Safe_free(val);
+ /* Duplicate new value if not NULL */
+ if (szValue != NULL)
+ szValue = Safe_strdup(szValue);
- hTabAddItemLong (h, key, Safe_strdup (szKey), Safe_strdup (szValue));
+ hTabAddItemLong (h, key, Safe_strdup (szKey), (void *)szValue);