fix stupid bugs

strcmp was funky, added a few guard checks to hashtable, added error printing to initrd and fixed swapgs (again) in isr.asm
This commit is contained in:
Matheus
2022-08-16 20:37:45 -03:00
parent 7a540ca1e1
commit df2e7b1c34
4 changed files with 27 additions and 6 deletions
+13
View File
@@ -20,6 +20,8 @@ bool hashtable_init(hashtable* table, size_t size){
}
static inline hashtableentry* getentry(hashtable* table, char* key){
if(!table->size)
return NULL;
size_t entryn = hash(key, strlen(key)) % table->size;
return &table->entries[entryn];
@@ -30,6 +32,9 @@ bool hashtable_insert(hashtable* table, char* key, void* val){
hashtableentry* entry = getentry(table, key);
if(!entry)
return NULL;
char* keysave = alloc(strlen(key)+1);
memcpy(keysave, key, strlen(key)+1);
@@ -62,6 +67,8 @@ bool hashtable_remove(hashtable* table, char* key){
hashtableentry* entry = getentry(table, key);
if(!entry) return false;
if(!entry->key) return false;
hashtableentry* prev = NULL;
@@ -100,6 +107,9 @@ bool hashtable_remove(hashtable* table, char* key){
bool hashtable_set(hashtable* table, char* key, void* value){
hashtableentry* entry = getentry(table, key);
if(!entry)
return false;
if(!entry->key)
return false;
@@ -117,6 +127,9 @@ void* hashtable_get(hashtable* table, char* key){
hashtableentry* entry = getentry(table, key);
if(!entry)
return NULL;
if(!entry->key)
return NULL;
+4 -1
View File
@@ -1,6 +1,9 @@
int strcmp(const char* a, const char* b){
while(*a && (*a++ == *b++));
while(*a && (*a == *b)){
++a;
++b;
}
return *(const unsigned char*)a - *(const unsigned char*)b;