Thanks for looking into this. I've written a slightly different fix before I saw the one from you.
Your patch was *almost* correct -- one minor detail is that you don't take care to free QUEUE and BLACKLIST before exiting, therefore technically creating a (small) memory leak. My patch avoids the leak simply by making sure the return is placed before calls to url_queue_new() and make_string_hash_table().
