]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test_rbd_replay.cc: fix va_list parameter handling
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Sun, 26 Oct 2014 17:07:48 +0000 (18:07 +0100)
committerSage Weil <sage@redhat.com>
Mon, 27 Oct 2014 19:44:25 +0000 (12:44 -0700)
Fix for:

[src/test/test_rbd_replay.cc:193]: (portability) Passing NULL after the
last typed argument to a variadic function leads to undefined behaviour.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
src/test/test_rbd_replay.cc

index 526fccf0e176691f42a77b2caae1bfbf0df07cd4..633c5fb43cf307391944adc687007a7dfa720dab 100644 (file)
@@ -169,12 +169,12 @@ TEST(RBDReplay, rbd_loc_parse) {
   EXPECT_FALSE(m.parse("a@b/c"));
 }
 
-static IO::ptr mkio(action_id_t ionum, ...) {
+static IO::ptr mkio(action_id_t ionum, int num_expected, ...) {
   IO::ptr io(new StartThreadIO(ionum, ionum, 0));
 
   va_list ap;
-  va_start(ap, ionum);
-  while (true) {
+  va_start(ap, num_expected);
+  for (int i = 0; i < num_expected ; i++) {
     IO::ptr* dep = va_arg(ap, IO::ptr*);
     if (!dep) {
       break;
@@ -190,15 +190,15 @@ TEST(RBDReplay, batch_unreachable_from) {
   io_set_t deps;
   io_set_t base;
   io_set_t unreachable;
-  IO::ptr io1(mkio(1, NULL));
-  IO::ptr io2(mkio(2, &io1, NULL));
-  IO::ptr io3(mkio(3, &io2, NULL));
-  IO::ptr io4(mkio(4, &io1, NULL));
-  IO::ptr io5(mkio(5, &io2, &io4, NULL));
-  IO::ptr io6(mkio(6, &io3, &io5, NULL));
-  IO::ptr io7(mkio(7, &io4, NULL));
-  IO::ptr io8(mkio(8, &io5, &io7, NULL));
-  IO::ptr io9(mkio(9, &io6, &io8, NULL));
+  IO::ptr io1(mkio(1, 0));
+  IO::ptr io2(mkio(2, 1, &io1));
+  IO::ptr io3(mkio(3, 1, &io2));
+  IO::ptr io4(mkio(4, 1, &io1));
+  IO::ptr io5(mkio(5, 2, &io2, &io4));
+  IO::ptr io6(mkio(6, 2, &io3, &io5));
+  IO::ptr io7(mkio(7, 1, &io4));
+  IO::ptr io8(mkio(8, 2, &io5, &io7));
+  IO::ptr io9(mkio(9, 2, &io6, &io8));
   // 1 (deps) <-- 2 (deps) <-- 3 (deps)
   // ^            ^            ^
   // |            |            |