how to fixed this nativechecker
#1

how to fix this error
Reply
#2

Quote:

Invalid file handles used without checking may produce run-time errors or crashes.

You didn't check if your fopen returns a valid handle.
Reply
#3

could explain why? more detailed
Reply
#4

https://sampwiki.blast.hk/wiki/Fwrite

See the example and read the comments of it so you can understand where and how it is checked if the file handle is valid.
Reply
#5

this code anyone wrong?
pawn Код:
public AddReportToken(playerid) {
    new
        sz_FileStr[32 + MAX_PLAYER_NAME],
        sz_playerName[MAX_PLAYER_NAME],
        i_timestamp[3],
        File: fPointer;

    GetPlayerName(playerid, sz_playerName, MAX_PLAYER_NAME);
    getdate(i_timestamp[0], i_timestamp[1], i_timestamp[2]);

    format(sz_FileStr, sizeof(sz_FileStr), "admins/rtokens/%s[%d'%d'%d]", sz_playerName, i_timestamp[1], i_timestamp[2], i_timestamp[0]);
    if(fexist(sz_FileStr))
    {
        fPointer = fopen(sz_FileStr, io_read);
        fread(fPointer, sz_playerName), fclose(fPointer);

        new
            i_tokenVal = strval(sz_playerName);

        format(sz_playerName, sizeof(sz_playerName), "%i", i_tokenVal + 1);
        fPointer = fopen(sz_FileStr, io_write);
        fwrite(fPointer, sz_playerName);
        fclose(fPointer);
    }
    else {
        fPointer = fopen(sz_FileStr, io_write);
        fwrite(fPointer, "1");
    }
    return fclose(fPointer);
}
Reply
#6

Assuming it's not called by a timer or Call Local/Remote Function, you don't need to use forward/public for it.
pawn Код:
if (!AddReportToken(playerid))
{
    // the file couldn't be opened..
}
else
{
    // everything is fine
}
pawn Код:
AddReportToken(playerid)
{
    new
        sz_FileStr[32 + MAX_PLAYER_NAME],
        sz_playerName[MAX_PLAYER_NAME],
        i_timestamp[3],
        File: fPointer;
   
    GetPlayerName(playerid, sz_playerName, MAX_PLAYER_NAME);
    getdate(i_timestamp[0], i_timestamp[1], i_timestamp[2]);
   
    format(sz_FileStr, sizeof(sz_FileStr), "admins/rtokens/%s[%d'%d'%d]", sz_playerName, i_timestamp[1], i_timestamp[2], i_timestamp[0]);
    if(fexist(sz_FileStr)) // checking if exists to open the file with io_read, else it will crash the server
    {
        fPointer = fopen(sz_FileStr, io_read);
        if (!fPointer) return 0; // return 0 and don't allow fPointer to be passed as argument and cause the crash
        fread(fPointer, sz_playerName);
        fclose(fPointer);
       
        new
            i_tokenVal = strval(sz_playerName);
       
        format(sz_playerName, sizeof(sz_playerName), "%i", i_tokenVal + 1);
        fPointer = fopen(sz_FileStr, io_write);
        if (!fPointer) return 0; // return 0 and don't allow fPointer to be passed as argument and cause the crash
        fwrite(fPointer, sz_playerName);
        fclose(fPointer);
    }
    else
    {
        fPointer = fopen(sz_FileStr, io_write);
        if (!fPointer) return 0; // return 0 and don't allow fPointer to be passed as argument and cause the crash
        fwrite(fPointer, "1");
        fclose(fPointer);
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)