/** * Add an imagemap to the hashtable, creating it if it doesn't exist * * \param c The containing content * \param key The name of the imagemap * \param list List of map regions * \return true on succes, false otherwise */ bool imagemap_add(html_content *c, const char *key, struct mapentry *list) { struct imagemap *map; unsigned int slot; assert(c != NULL); assert(key != NULL); assert(list != NULL); if (imagemap_create(c) == false) return false; map = calloc(1, sizeof(*map)); if (map == NULL) return false; map->key = strdup(key); if (map->key == NULL) { free(map); return false; } map->list = list; slot = imagemap_hash(key); map->next = c->imagemaps[slot]; c->imagemaps[slot] = map; return true; }
/** * Add an imagemap to the hashtable, creating it if it doesn't exist * * \param c The containing content * \param key The name of the imagemap * \param list List of map regions * \return true on succes, false otherwise */ static bool imagemap_add(html_content *c, dom_string *key, struct mapentry *list) { struct imagemap *map; unsigned int slot; assert(c != NULL); assert(key != NULL); assert(list != NULL); if (imagemap_create(c) == false) return false; map = calloc(1, sizeof(*map)); if (map == NULL) return false; /* \todo Stop relying on NULL termination of dom_string */ map->key = strdup(dom_string_data(key)); if (map->key == NULL) { free(map); return false; } map->list = list; slot = imagemap_hash(map->key); map->next = c->imagemaps[slot]; c->imagemaps[slot] = map; return true; }