Ver código fonte

2010-01-23 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Fixed broken OptionParser::findByName().
	* src/OptionParser.cc
	* test/OptionParserTest.cc
Tatsuhiro Tsujikawa 15 anos atrás
pai
commit
89982bb10f
3 arquivos alterados com 13 adições e 3 exclusões
  1. 6 0
      ChangeLog
  2. 4 3
      src/OptionParser.cc
  3. 3 0
      test/OptionParserTest.cc

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+2010-01-23  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Fixed broken OptionParser::findByName().
+	* src/OptionParser.cc
+	* test/OptionParserTest.cc
+
 2010-01-23  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Fixed test error without BitTorrent support.

+ 4 - 3
src/OptionParser.cc

@@ -315,10 +315,11 @@ OptionParser::findByName(const std::string& name) const
   std::vector<SharedHandle<OptionHandler> >::const_iterator i =
     std::lower_bound(_optionHandlers.begin(), _optionHandlers.end(),
                      handler, OptionHandlerNameLesser());
-  if(i == _optionHandlers.end() || (*i)->isHidden()) {
-    handler.reset();
-  } else {
+  if(i != _optionHandlers.end() && (*i)->getName() == name &&
+     !(*i)->isHidden()) {
     handler = *i;
+  } else {
+    handler.reset();
   }
   return handler;
 }

+ 3 - 0
test/OptionParserTest.cc

@@ -109,6 +109,9 @@ void OptionParserTest::testFindByName()
 
   SharedHandle<OptionHandler> charlie = _oparser->findByName("charlie");
   CPPUNIT_ASSERT(charlie.isNull());
+
+  SharedHandle<OptionHandler> alpha2 = _oparser->findByName("alpha2");
+  CPPUNIT_ASSERT(alpha2.isNull());
 }
 
 void OptionParserTest::testFindByShortName()