You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by yl...@apache.org on 2015/04/09 16:01:23 UTC

svn commit: r1672356 - in /apr/apr/branches/1.6.x: ./ tables/apr_skiplist.c test/testskiplist.c

Author: ylavic
Date: Thu Apr  9 14:01:22 2015
New Revision: 1672356

URL: http://svn.apache.org/r1672356
Log:
Merge r1672354 from trunk.

skiplist: follow up to r1664769.
Fix insert_compare() returning NULL on the very first insertion (top is NULL).

Modified:
    apr/apr/branches/1.6.x/   (props changed)
    apr/apr/branches/1.6.x/tables/apr_skiplist.c
    apr/apr/branches/1.6.x/test/testskiplist.c

Propchange: apr/apr/branches/1.6.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr  9 14:01:22 2015
@@ -1,4 +1,4 @@
 /apr/apr/branches/1.4.x:1003369,1101301
-/apr/apr/trunk:733052,739635,741862,741866-741867,741869,741871,745763-745764,746310,747990,748080,748361,748371,748565,748888,748902,748988,749810,760443,767895,775683,782838,783398,783958,784633,784773,788588,789050,793192-793193,794118,794485,795267,799497,800627,809745,809854,810472,811455,813063,821306,829490,831641,832904,835607,888669,892028,892159,892435,892909,896382,896653,908427,910419,910597,917819,917837-917838,925965,929796,931973,951771,960665,960671,979891,983618,989450,990435,1003338,1044440,1044447,1055657,1072165,1078845,1081462,1081495,1083038,1083242,1084662,1086695,1088023,1089031,1089129,1089438,1099348,1103310,1183683,1183685-1183686,1183688,1183693,1183698,1213382,1235047,1236970,1237078,1237507,1240472,1340286,1340288,1340470,1341193,1341196,1343233,1343243,1367050,1368819,1370494,1372018,1372022,1372093,1372849,1376957,1384764,1389077,1400200,1402868,1405985,1406690,1420106,1420109,1425356,1428809,1438940,1438957-1438959,1442903,1449568,1456418,1459994,146
 0179-1460180,1460241,1460399,1460405,1462738,1462813,1470186,1470348,1475509,1478905,1480067,1481262,1481265,1484271,1487796,1489517,1496407,1502804,1510354,1516261,1523384,1523479,1523484,1523505,1523521,1523604,1523613,1523615,1523844-1523845,1523853,1524014,1524031,1528797,1528809,1529488,1529495,1529515,1529521,1529668,1530786,1530800,1530988,1531554,1531768,1531884,1532022,1533104,1533111,1533979,1535027,1535157,1536744,1538171,1539374,1539389,1539455,1539603,1541054,1541061,1541486,1541655,1541666,1541744,1542601,1542779,1543033,1543056,1548575,1550907,1551650,1551659,1558905,1559382,1559873,1559975,1561040,1561260,1561265,1561321,1561347,1561356,1561361,1561394,1561555,1571894,1575509,1578420,1587045,1587063,1587543,1587545,1588878,1588937,1593611,1593614-1593615,1593680,1594684,1594708,1595549,1597797,1597803,1604590,1604596,1604598,1605104,1610854,1611023,1611107,1611110,1611117,1611120,1611125,1611184,1611193,1611466,1611515,1611517,1625173,1626564,1634615,1642159,1648830,
 1664406,1664447,1664451,1664471,1664769-1664770,1664775,1664904,1664911,1664958,1666341,1666411,1666458,1666611,1667914-1667916,1671329,1671356,1671389,1671513-1671514
+/apr/apr/trunk:733052,739635,741862,741866-741867,741869,741871,745763-745764,746310,747990,748080,748361,748371,748565,748888,748902,748988,749810,760443,767895,775683,782838,783398,783958,784633,784773,788588,789050,793192-793193,794118,794485,795267,799497,800627,809745,809854,810472,811455,813063,821306,829490,831641,832904,835607,888669,892028,892159,892435,892909,896382,896653,908427,910419,910597,917819,917837-917838,925965,929796,931973,951771,960665,960671,979891,983618,989450,990435,1003338,1044440,1044447,1055657,1072165,1078845,1081462,1081495,1083038,1083242,1084662,1086695,1088023,1089031,1089129,1089438,1099348,1103310,1183683,1183685-1183686,1183688,1183693,1183698,1213382,1235047,1236970,1237078,1237507,1240472,1340286,1340288,1340470,1341193,1341196,1343233,1343243,1367050,1368819,1370494,1372018,1372022,1372093,1372849,1376957,1384764,1389077,1400200,1402868,1405985,1406690,1420106,1420109,1425356,1428809,1438940,1438957-1438959,1442903,1449568,1456418,1459994,146
 0179-1460180,1460241,1460399,1460405,1462738,1462813,1470186,1470348,1475509,1478905,1480067,1481262,1481265,1484271,1487796,1489517,1496407,1502804,1510354,1516261,1523384,1523479,1523484,1523505,1523521,1523604,1523613,1523615,1523844-1523845,1523853,1524014,1524031,1528797,1528809,1529488,1529495,1529515,1529521,1529668,1530786,1530800,1530988,1531554,1531768,1531884,1532022,1533104,1533111,1533979,1535027,1535157,1536744,1538171,1539374,1539389,1539455,1539603,1541054,1541061,1541486,1541655,1541666,1541744,1542601,1542779,1543033,1543056,1548575,1550907,1551650,1551659,1558905,1559382,1559873,1559975,1561040,1561260,1561265,1561321,1561347,1561356,1561361,1561394,1561555,1571894,1575509,1578420,1587045,1587063,1587543,1587545,1588878,1588937,1593611,1593614-1593615,1593680,1594684,1594708,1595549,1597797,1597803,1604590,1604596,1604598,1605104,1610854,1611023,1611107,1611110,1611117,1611120,1611125,1611184,1611193,1611466,1611515,1611517,1625173,1626564,1634615,1642159,1648830,
 1664406,1664447,1664451,1664471,1664769-1664770,1664775,1664904,1664911,1664958,1666341,1666411,1666458,1666611,1667914-1667916,1671329,1671356,1671389,1671513-1671514,1672354
 /apr/apr/trunk/test/testnames.c:1460405
 /httpd/httpd/trunk:1604590

Modified: apr/apr/branches/1.6.x/tables/apr_skiplist.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/tables/apr_skiplist.c?rev=1672356&r1=1672355&r2=1672356&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/tables/apr_skiplist.c (original)
+++ apr/apr/branches/1.6.x/tables/apr_skiplist.c Thu Apr  9 14:01:22 2015
@@ -496,6 +496,10 @@ static apr_skiplistnode *insert_compare(
         if (p) {
             p->up = tmp;
         }
+        else {
+            /* This sets ret to the bottom-most node we are inserting */
+            ret = tmp;
+        }
         p = tmp;
     }
     if (sl->index != NULL) {

Modified: apr/apr/branches/1.6.x/test/testskiplist.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/test/testskiplist.c?rev=1672356&r1=1672355&r2=1672356&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/test/testskiplist.c (original)
+++ apr/apr/branches/1.6.x/test/testskiplist.c Thu Apr  9 14:01:22 2015
@@ -58,7 +58,7 @@ static void skiplist_find(abts_case *tc,
 {
     const char *val;
 
-    apr_skiplist_insert(skiplist, "baton");
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "baton"));
     val = apr_skiplist_find(skiplist, "baton", NULL);
     ABTS_PTR_NOTNULL(tc, val);
     ABTS_STR_EQUAL(tc, "baton", val);
@@ -78,7 +78,7 @@ static void skiplist_insert(abts_case *t
     int i, height = 0;
 
     for (i = 0; i < 10; ++i) {
-        apr_skiplist_insert(skiplist, "baton");
+        ABTS_PTR_EQUAL(tc, NULL, apr_skiplist_insert(skiplist, "baton"));
         ABTS_TRUE(tc, 1 == skiplist_get_size(tc, skiplist));
         val = apr_skiplist_find(skiplist, "baton", NULL);
         ABTS_PTR_NOTNULL(tc, val);
@@ -92,13 +92,13 @@ static void skiplist_insert(abts_case *t
         }
     }
 
-    apr_skiplist_insert(skiplist, "foo");
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "foo"));
     ABTS_TRUE(tc, 2 == skiplist_get_size(tc, skiplist));
     val = apr_skiplist_find(skiplist, "foo", NULL);
     ABTS_PTR_NOTNULL(tc, val);
     ABTS_STR_EQUAL(tc, "foo", val);
 
-    apr_skiplist_insert(skiplist, "atfirst");
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "atfirst"));
     ABTS_TRUE(tc, 3 == skiplist_get_size(tc, skiplist));
     val = apr_skiplist_find(skiplist, "atfirst", NULL);
     ABTS_PTR_NOTNULL(tc, val);
@@ -112,28 +112,28 @@ static void skiplist_add(abts_case *tc,
 
     for (i = 0; i < 100; ++i) {
         n++;
-        apr_skiplist_add(skiplist, "daton");
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "daton"));
         ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
         val = apr_skiplist_find(skiplist, "daton", NULL);
         ABTS_PTR_NOTNULL(tc, val);
         ABTS_STR_EQUAL(tc, "daton", val);
 
         n++;
-        apr_skiplist_add(skiplist, "baton");
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "baton"));
         ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
         val = apr_skiplist_find(skiplist, "baton", NULL);
         ABTS_PTR_NOTNULL(tc, val);
         ABTS_STR_EQUAL(tc, "baton", val);
 
         n++;
-        apr_skiplist_add(skiplist, "caton");
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "caton"));
         ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
         val = apr_skiplist_find(skiplist, "caton", NULL);
         ABTS_PTR_NOTNULL(tc, val);
         ABTS_STR_EQUAL(tc, "caton", val);
 
         n++;
-        apr_skiplist_add(skiplist, "aaton");
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "aaton"));
         ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
         val = apr_skiplist_find(skiplist, "aaton", NULL);
         ABTS_PTR_NOTNULL(tc, val);
@@ -153,9 +153,9 @@ static void skiplist_size(abts_case *tc,
 
     ABTS_TRUE(tc, 0 == skiplist_get_size(tc, skiplist));
 
-    apr_skiplist_insert(skiplist, "abc");
-    apr_skiplist_insert(skiplist, "ghi");
-    apr_skiplist_insert(skiplist, "def");
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "abc"));
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "ghi"));
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(skiplist, "def"));
     val = apr_skiplist_find(skiplist, "abc", NULL);
     ABTS_PTR_NOTNULL(tc, val);
     ABTS_STR_EQUAL(tc, "abc", val);
@@ -176,13 +176,13 @@ static void skiplist_remove(abts_case *t
 
     ABTS_TRUE(tc, 0 == skiplist_get_size(tc, skiplist));
 
-    apr_skiplist_add(skiplist, "baton");
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "baton"));
     ABTS_TRUE(tc, 1 == skiplist_get_size(tc, skiplist));
     val = apr_skiplist_find(skiplist, "baton", NULL);
     ABTS_PTR_NOTNULL(tc, val);
     ABTS_STR_EQUAL(tc, "baton", val);
 
-    apr_skiplist_add(skiplist, "baton");
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "baton"));
     ABTS_TRUE(tc, 2 == skiplist_get_size(tc, skiplist));
     val = apr_skiplist_find(skiplist, "baton", NULL);
     ABTS_PTR_NOTNULL(tc, val);
@@ -194,7 +194,7 @@ static void skiplist_remove(abts_case *t
     ABTS_PTR_NOTNULL(tc, val);
     ABTS_STR_EQUAL(tc, "baton", val);
 
-    apr_skiplist_add(skiplist, "baton");
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(skiplist, "baton"));
     ABTS_TRUE(tc, 2 == skiplist_get_size(tc, skiplist));
     val = apr_skiplist_find(skiplist, "baton", NULL);
     ABTS_PTR_NOTNULL(tc, val);
@@ -231,7 +231,7 @@ static void skiplist_random_loop(abts_ca
         else {
             batons[i] = apr_pstrdup(ptmp, batons[i % NUM_RAND]);
         }
-        apr_skiplist_add(sl, batons[i]);
+        ABTS_PTR_NOTNULL(tc, apr_skiplist_add(sl, batons[i]));
         val = apr_skiplist_find(sl, batons[i], NULL);
         ABTS_PTR_NOTNULL(tc, val);
         ABTS_STR_EQUAL(tc, batons[i], val);
@@ -246,16 +246,16 @@ typedef struct elem {
 } elem;
 
 
-static void add_int_to_skiplist(apr_skiplist *list, int n){
+static void add_int_to_skiplist(abts_case *tc, apr_skiplist *list, int n){
     int* a = apr_skiplist_alloc(list, sizeof(int));
     *a = n;
-    apr_skiplist_add(list, a);
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(list, a));
 }
 
-static void add_elem_to_skiplist(apr_skiplist *list, elem n){
+static void add_elem_to_skiplist(abts_case *tc, apr_skiplist *list, elem n){
     elem* a = apr_skiplist_alloc(list, sizeof(elem));
     *a = n;
-    apr_skiplist_add(list, a);
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(list, a));
 }
 
 static int comp(void *a, void *b){
@@ -297,7 +297,7 @@ static void skiplist_test(abts_case *tc,
     
     /* insert 10 objects */
     for (i = 0; i < test_elems; ++i){
-        add_int_to_skiplist(list, i);
+        add_int_to_skiplist(tc, list, i);
     }
 
     /* remove all objects */
@@ -307,7 +307,7 @@ static void skiplist_test(abts_case *tc,
 
     /* insert 10 objects again */
     for (i = test_elems; i < test_elems+test_elems; ++i){
-        add_int_to_skiplist(list, i);
+        add_int_to_skiplist(tc, list, i);
     }
 
     j = test_elems;
@@ -319,7 +319,7 @@ static void skiplist_test(abts_case *tc,
     val = apr_skiplist_pop(list, NULL);
     ABTS_PTR_EQUAL(tc, val, NULL);
 
-    add_int_to_skiplist(list, 42);
+    add_int_to_skiplist(tc, list, 42);
     val = apr_skiplist_pop(list, NULL);
     ABTS_INT_EQUAL(tc, *val, 42); 
 
@@ -327,10 +327,10 @@ static void skiplist_test(abts_case *tc,
     val = apr_skiplist_pop(list, NULL);
     ABTS_PTR_EQUAL(tc, val, NULL);
 
-    apr_skiplist_add(list, &first_forty_two);
-    add_int_to_skiplist(list, 1);
-    add_int_to_skiplist(list, 142);
-    apr_skiplist_add(list, &second_forty_two);
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(list, &first_forty_two));
+    add_int_to_skiplist(tc, list, 1);
+    add_int_to_skiplist(tc, list, 142);
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_add(list, &second_forty_two));
     val = apr_skiplist_peek(list);
     ABTS_INT_EQUAL(tc, *val, 1);
     val = apr_skiplist_pop(list, NULL);
@@ -349,11 +349,11 @@ static void skiplist_test(abts_case *tc,
 
     ABTS_INT_EQUAL(tc, APR_SUCCESS, apr_skiplist_init(&list2, ptmp));
     apr_skiplist_set_compare(list2, scomp, scomp);
-    add_elem_to_skiplist(list2, t2);
-    add_elem_to_skiplist(list2, t1);
-    add_elem_to_skiplist(list2, t3);
-    add_elem_to_skiplist(list2, t5);
-    add_elem_to_skiplist(list2, t4);
+    add_elem_to_skiplist(tc, list2, t2);
+    add_elem_to_skiplist(tc, list2, t1);
+    add_elem_to_skiplist(tc, list2, t3);
+    add_elem_to_skiplist(tc, list2, t5);
+    add_elem_to_skiplist(tc, list2, t4);
     val2 = apr_skiplist_pop(list2, NULL);
     ABTS_INT_EQUAL(tc, val2->a, 1);
     val2 = apr_skiplist_pop(list2, NULL);
@@ -371,10 +371,10 @@ static void skiplist_test(abts_case *tc,
 
     ABTS_INT_EQUAL(tc, APR_SUCCESS, apr_skiplist_init(&list3, ptmp));
     apr_skiplist_set_compare(list3, acomp, acomp);
-    apr_skiplist_insert(list3, &t2);
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(list3, &t2));
     val2 = apr_skiplist_find(list3, &t2, NULL);
     ABTS_PTR_EQUAL(tc, &t2, val2);
-    apr_skiplist_insert(list3, &t3);
+    ABTS_PTR_NOTNULL(tc, apr_skiplist_insert(list3, &t3));
     val2 = apr_skiplist_find(list3, &t3, NULL);
     ABTS_PTR_EQUAL(tc, &t3, val2);
     apr_skiplist_remove(list3, &t3, NULL);