Hi!

I cannot see any valid reason why /hdel -w stops the code if hash table doesn't exists, it should work the same way as /hfree -w works instead, just ignoring the command if the hash table doesn't exists would be a reason to use it for deleting item/items from the hash table directly without checking it first by using an if statement, also i don't think this change would break any backward compatibility on any code.

Currently:
Code
//hadd -m test one 1 | hadd test two 1 | hadd test three 1 | hfree -w test | hdel -w test one | echo Done
; This is going to stop the code on /hdel -w by giving an error because before the table does not exists.

//hadd -m test one 1 | hadd test two 1 | hadd test three 1 | hfree -w test | if ($hget(test)) hdel -w test one | echo Done
; In order to avoid that error you have to check for that table if exists before executing it to avoid any errors, now think about having several tables/items
; that you want to delete fast, you have to add a lot of if checks without a reason that you can avoid them if just /hdel -w won't stop the code with an error.


Suggestion:
Code
//hadd -m test one 1 | hadd test two 1 | hadd test three 1 | hfree -w test | hdel -w test one | echo Done
; This is going to proceed the code on /hdel -w by echoing "Done" even if the table does not exists.