Issue information

Issue ID
#3952
Status
Fixed
Severity
None
Started
Hercules Elf Bot
Dec 17, 2009 23:56
Last Post
Hercules Elf Bot
Dec 17, 2009 23:56
Confirmation
N/A

Hercules Elf Bot - Dec 17, 2009 23:56

Originally posted by [b]Ai4rei[/b]
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=3952

/src/common/plugins.c:
CODE
static int plugin_iscompatible(char* version)
{
    int req_major = 0;
    int req_minor = 0;
    int major = 0;
    int minor = 0;

    if( version == NULL )
        return 0;
    sscanf(version, "%d.%d", &req_major, &req_minor);
    sscanf(version, "%d.%d", &major, &minor);
    return ( req_major == major || req_minor <= minor );
}


The code checks plugin's version against itself, instead against the version of the plugin system.

/src/common/plugin.h:
CODE
// Compatible plugins have:
// - equal major version
// - lower or equal minor version


so the fix would be:
CODE
static int plugin_iscompatible(char* version)
{
    int req_major = 0;
    int req_minor = 0;
    int major = 0;
    int minor = 0;

    if( version == NULL )
        return 0;
    sscanf(version, "%d.%d", &req_major, &req_minor);
-    sscanf(version, "%d.%d", &major, &minor);
+    sscanf(PLUGIN_VERSION, "%d.%d", &major, &minor);
    return ( req_major == major || req_minor <= minor );
}