r2192 - finally fix the issue with network sorting order
authorDenis Ovsienko <infrastation@yandex.ru>
Sun, 31 Aug 2008 13:58:51 +0000 (13:58 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Sun, 31 Aug 2008 13:58:51 +0000 (13:58 +0000)
inc/functions.php
inc/interface.php

index 3267e89..a9b547b 100644 (file)
@@ -1411,7 +1411,15 @@ function taginfoCmp ($tagA, $tagB)
 // distinct base IP addresses.
 function IPv4NetworkCmp ($netA, $netB)
 {
 // distinct base IP addresses.
 function IPv4NetworkCmp ($netA, $netB)
 {
-       return $netA['db_first'] - $netB['db_first'];
+       // There's a problem just substracting one u32 integer from another,
+       // because the result may happen big enough to become a negative i32
+       // integer itself (PHP tries to cast everything it sees to signed int).
+       if ($netA['db_first'] > $netB['db_first'])
+               return 1;
+       elseif ($netA['db_first'] < $netB['db_first'])
+               return -1;
+       else
+               return 0;
 }
 
 // Modify the given tag tree so, that each level's items are sorted alphabetically.
 }
 
 // Modify the given tag tree so, that each level's items are sorted alphabetically.
index 90b3b8e..3d77b25 100644 (file)
@@ -2011,14 +2011,12 @@ function renderIPv4SpaceRecords ($tree, $level = 0, &$tagcache = array())
 
 function renderIPv4Space ()
 {
 
 function renderIPv4Space ()
 {
-       global $root, $pageno;
-
-       echo "<table border=0 class=objectview>\n";
-       echo "<tr><td class=pcleft>";
-
        $tagfilter = getTagFilter();
        $tree = treeFromList (getIPv4NetworkList ($tagfilter, getTFMode()));
        sortTree ($tree, 'IPv4NetworkCmp');
        $tagfilter = getTagFilter();
        $tree = treeFromList (getIPv4NetworkList ($tagfilter, getTFMode()));
        sortTree ($tree, 'IPv4NetworkCmp');
+
+       echo "<table border=0 class=objectview>\n";
+       echo "<tr><td class=pcleft>";
        // FIXME: the counter is wrong
        startPortlet ('networks (' . count ($tree) . ')');
        echo "<table class='widetable' border=0 cellpadding=5 cellspacing=0 align='center'>\n";
        // FIXME: the counter is wrong
        startPortlet ('networks (' . count ($tree) . ')');
        echo "<table class='widetable' border=0 cellpadding=5 cellspacing=0 align='center'>\n";