Raised This Month: $ Target: $400
 0% 

Invalid Trie Handle


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Elusive138
Senior Member
Join Date: Dec 2010
Old 01-09-2011 , 06:09   Invalid Trie Handle
Reply With Quote #1

I'm experimenting with tries and ran across an invalid trie handle provided error when I tried TrieSetArray.


PHP Code:
TrieSetArray(cooldownTriekeybuffersizeof(buffer)) 
PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Elusive"


public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /test2""Debug_Test2")
}

stock Float:CheckCooldown(index=0Float:cooldownTime=0.0id=0bool:readonly=falsebool:remove=false)
{
    static 
Trie:cooldownTrie
    
new key[16], Float:buffer[33
    
    if (!
cooldownTrie)
    {
        
cooldownTrie TrieCreate()
    }
    if (
cooldownTrie == Invalid_Trie)
    {
        
set_fail_state("Invalid Handle")
    }
    
formatex(keycharsmax(key), "ID%i"id)
    
    if (
remove)
    {
        if (
TrieKeyExists(cooldownTriekey))
        {
            
TrieDeleteKey(cooldownTriekey)
            return 
Float:1
        
}
        else
        {
            return 
Float:0
        
}
    }
    
    if (
TrieKeyExists(cooldownTriekey))
    {
        
TrieGetArray(cooldownTriekeybuffersizeof(buffer))
    }
    
    new 
Float:currentTime get_gametime()
    if (
buffer[index] > currentTime)
    {
        return (
buffer[index] - currentTime)
    }
    if (
readonly)
    {
        return 
Float:0
    
}
    
    
buffer[index] = currentTime cooldownTime
    
    TrieSetArray
(cooldownTriekeybuffersizeof(buffer))
    
    return 
Float:0
}

public 
Debug_Test2(id)
{
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222__))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555__))
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222__))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555__))
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222_true))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555_true))
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222__))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555__))

Code:
L 01/10/2011 - 15:25:44: Invalid trie handle provided (1)
L 01/10/2011 - 15:25:44: [AMXX] Displaying debug trace (plugin "Debug.amxx")
L 01/10/2011 - 15:25:44: [AMXX] Run time error 10: native error (native "TrieSetArray")
L 01/10/2011 - 15:25:44: [AMXX]    [0] Debug.sma::CheckCooldown (line 62)
L 01/10/2011 - 15:25:44: [AMXX]    [1] Debug.sma::Debug_Test2 (line 69)
Any help/advice would be appreciated.

Also, can anyone explain what this part of trietest.sma does?
PHP Code:
stock check_frees()
{
    if (
TrieMallocCount() != TrieFreeCount())
        
fail("free count == malloc count");

    else
        
pass("free count == malloc count");

    
server_print("malloc count: %d free count: %d"TrieMallocCount(), TrieFreeCount());


Last edited by Elusive138; 01-09-2011 at 23:29.
Elusive138 is offline
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 01-09-2011 , 07:16   Re: Invalid Trie Handle
Reply With Quote #2

Show the whole code.
__________________
Arkshine is offline
Old 01-09-2011, 07:26
Elusive138
This message has been deleted by Elusive138. Reason: Somehow managed a triple post o.O
Old 01-09-2011, 07:28
Elusive138
This message has been deleted by Elusive138. Reason: Somehow managed a triple post o.O
Elusive138
Senior Member
Join Date: Dec 2010
Old 01-09-2011 , 07:29   Re: Invalid Trie Handle
Reply With Quote #3

If you can make any sense out of this mess...
called on /test2
I did the same thing with Dynamic Arrays, and that worked.
PHP Code:
stock Float:CheckCooldown(index=0Float:cooldownTime=0.0id=0bool:readonly=falsebool:remove=false)
{
    static 
Trie:cooldownTrie
    
new key[16], Float:buffer[33
    
    if (!
cooldownTrie)
    {
        
cooldownTrie TrieCreate()
    }
    if (
cooldownTrie == Invalid_Trie)
    {
        
set_fail_state("Invalid Handle")
    }
    
formatex(keycharsmax(key), "ID%i"id)
    
    if (
remove)
    {
        if (
TrieKeyExists(cooldownTriekey))
        {
            
TrieDeleteKey(cooldownTriekey)
            return 
Float:1
        
}
        else
        {
            return 
Float:0
        
}
    }
    
    if (
TrieKeyExists(cooldownTriekey))
    {
        
TrieGetArray(cooldownTriekeybuffersizeof(buffer))
    }
        
    new 
Float:currentTime get_gametime()
    if (
buffer[index] > currentTime)
    {
        return (
buffer[index] - currentTime)
    }
    if (
readonly)
    {
        return 
Float:0
    
}
    
    
buffer[index] = currentTime cooldownTime

    TrieSetArray
(cooldownTriekeybuffersizeof(buffer))

    return 
Float:0
}

public 
Debug_Test2(id)
{
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222__))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555__))
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222__))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555__))
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222_true))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555_true))
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222__))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555__))

Elusive138 is offline
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 01-09-2011 , 08:12   Re: Invalid Trie Handle
Reply With Quote #4

Please provide a simple and ready plugin test where the bug occurs so I can test as it is. Because I see nothing wrong.
__________________
Arkshine is offline
Elusive138
Senior Member
Join Date: Dec 2010
Old 01-09-2011 , 23:28   Re: Invalid Trie Handle
Reply With Quote #5

Sorry, probably should have done this the first post..

EDIT: Never mind, now works correctly. I didn't even know there was a v1.8.2...
Quote:
joaquimandrade - Fix TrieSetArray reading the wrong parameter
Oh, and thanks fysiks.

If anyone could tell me what TrieMallocCount() and TrieFreeCount() does, exactly, I'd very much appreciate it.

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Elusive"


public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /test2""Debug_Test2")
}

stock Float:CheckCooldown(index=0Float:cooldownTime=0.0id=0bool:readonly=falsebool:remove=false)
{
    static 
Trie:cooldownTrie
    
new key[16], Float:buffer[33
    
    if (!
cooldownTrie)
    {
        
cooldownTrie TrieCreate()
    }
    if (
cooldownTrie == Invalid_Trie)
    {
        
set_fail_state("Invalid Handle")
    }
    
formatex(keycharsmax(key), "ID%i"id)
    
    if (
remove)
    {
        if (
TrieKeyExists(cooldownTriekey))
        {
            
TrieDeleteKey(cooldownTriekey)
            return 
Float:1
        
}
        else
        {
            return 
Float:0
        
}
    }
    
    if (
TrieKeyExists(cooldownTriekey))
    {
        
TrieGetArray(cooldownTriekeybuffersizeof(buffer))
    }
    
    new 
Float:currentTime get_gametime()
    if (
buffer[index] > currentTime)
    {
        return (
buffer[index] - currentTime)
    }
    if (
readonly)
    {
        return 
Float:0
    
}
    
    
buffer[index] = currentTime cooldownTime
    
    TrieSetArray
(cooldownTriekeybuffersizeof(buffer))
    
    return 
Float:0
}

public 
Debug_Test2(id)
{
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222__))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555__))
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222__))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555__))
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222_true))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555_true))
    
client_print(idprint_chat"ID = 222, cooldown = %f"CheckCooldown(id5.0222__))
    
client_print(idprint_chat"ID = 555, cooldown = %f"CheckCooldown(id10.0555__))

Code:
L 01/10/2011 - 15:25:44: Invalid trie handle provided (1)
L 01/10/2011 - 15:25:44: [AMXX] Displaying debug trace (plugin "Debug.amxx")
L 01/10/2011 - 15:25:44: [AMXX] Run time error 10: native error (native "TrieSetArray")
L 01/10/2011 - 15:25:44: [AMXX]    [0] Debug.sma::CheckCooldown (line 62)
L 01/10/2011 - 15:25:44: [AMXX]    [1] Debug.sma::Debug_Test2 (line 69)

Last edited by Elusive138; 01-10-2011 at 00:19.
Elusive138 is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 01-10-2011 , 00:11   Re: Invalid Trie Handle
Reply With Quote #6

Just curious, are you using AMX Mod X 1.8.2?
__________________
fysiks is offline
Elusive138
Senior Member
Join Date: Dec 2010
Old 01-10-2011 , 00:31   Re: Invalid Trie Handle
Reply With Quote #7

Quote:
Originally Posted by fysiks View Post
Just curious, are you using AMX Mod X 1.8.2?
I am now.. was previously using 1.8.1.
Elusive138 is offline
joaquimandrade
Veteran Member
Join Date: Dec 2008
Location: Portugal
Old 01-10-2011 , 00:59   Re: Invalid Trie Handle
Reply With Quote #8

Quote:
Originally Posted by Elusive138 View Post
If anyone could tell me what TrieMallocCount() and TrieFreeCount()
Where you found those?
__________________
joaquimandrade is offline
Elusive138
Senior Member
Join Date: Dec 2010
Old 01-10-2011 , 01:04   Re: Invalid Trie Handle
Reply With Quote #9

Quote:
Originally Posted by joaquimandrade View Post
Where you found those?
In trietest.sma, where I somehow missed the comment.. I'm stupid
Quote:
// These natives are only available in a debug build of amxmodx

Thanks.
Elusive138 is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 02:12.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode