Skip to content

Bug when get not exists key #18

@xiao8385

Description

@xiao8385

There is a test program to put key: "key=>6" and get key: "key=>-3"

int main() {
	char key_string[KEY_MAX_LENGTH];
	data_struct_t* value;
	int error;
	map_t map;

	map = hashmap_new();

	snprintf(key_string, KEY_MAX_LENGTH, "key=>%d", 6);
	value = malloc(sizeof(data_struct_t));
	snprintf(value->key_string, KEY_MAX_LENGTH, "value=>%d", 6);
	value->number = 6;

	hashmap_put(map, key_string, value);

	snprintf(key_string, KEY_MAX_LENGTH, "key=>%d", -3);

	error = hashmap_get(map, key_string, (void**) (&value));
	if (error == MAP_MISSING) {
		printf("Missing key:%s\n", key_string);
	} else if (error == MAP_OK) {
		printf("Has key:%s, value.string:%s, value.number:%d\n", key_string, value->key_string, value->number);
	}

	value = malloc(sizeof(data_struct_t));
	snprintf(value->key_string, KEY_MAX_LENGTH, "value=>%d", -3);
	value->number = -3;
	error = hashmap_put(map, key_string, value);
	if (error != MAP_OK) {
		printf("dddddd\n");
	}

	error = hashmap_get(map, key_string, (void**) (&value));
	if (error == MAP_MISSING) {
		printf("Missing key:%s\n", key_string);
	} else if (error == MAP_OK) {
		printf("Has key:%s, value.string:%s, value.number:%d\n", key_string, value->key_string, value->number);
	}
}

Test result as following:

Has key:key=>-3, value.string:value=>6, value.number:6
Has key:key=>-3, value.string:value=>-3, value.number:-3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions