From 5758cc48f5f340132d19e79f647dd5d3ad8c54fc Mon Sep 17 00:00:00 2001
From: Edwin Mons <edwin.mons@isode.com>
Date: Mon, 29 Oct 2018 14:32:15 +0000
Subject: Fix Stanza Ack maximum and tests

The stanza ack code now uses a constexpr without numeric cast to
calculate the maximum, and test code uses the constant UINT32_MAX from
limits, both of which should result in the same number.

Test-Information:

Unit tests pass on macOS 10.14

Change-Id: Iba8fc779e52699d480d1ce458df0c6581a16ad06

diff --git a/Swiften/Elements/StanzaAck.cpp b/Swiften/Elements/StanzaAck.cpp
index bd0b78d..dda97f5 100644
--- a/Swiften/Elements/StanzaAck.cpp
+++ b/Swiften/Elements/StanzaAck.cpp
@@ -1,19 +1,17 @@
 /*
- * Copyright (c) 2013 Isode Limited.
+ * Copyright (c) 2013-2018 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #include <Swiften/Elements/StanzaAck.h>
 
-#include <boost/numeric/conversion/cast.hpp>
-
 using namespace Swift;
 
 StanzaAck::~StanzaAck() {
 }
 
-void StanzaAck::setHandledStanzasCount(int i) {
-    handledStanzasCount = boost::numeric_cast<unsigned int>(i);
+void StanzaAck::setHandledStanzasCount(unsigned int i) {
+    handledStanzasCount = i;
     valid = true;
 }
diff --git a/Swiften/Elements/StanzaAck.h b/Swiften/Elements/StanzaAck.h
index 68f0a2f..f664aca 100644
--- a/Swiften/Elements/StanzaAck.h
+++ b/Swiften/Elements/StanzaAck.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2016 Isode Limited.
+ * Copyright (c) 2010-2018 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -24,7 +24,7 @@ namespace Swift {
                 return handledStanzasCount;
             }
 
-            void setHandledStanzasCount(int i);
+            void setHandledStanzasCount(unsigned int i);
 
             bool isValid() const {
                 return valid;
diff --git a/Swiften/Parser/StanzaAckParser.cpp b/Swiften/Parser/StanzaAckParser.cpp
index de0287e..42ab181 100644
--- a/Swiften/Parser/StanzaAckParser.cpp
+++ b/Swiften/Parser/StanzaAckParser.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2018 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -17,7 +17,7 @@ void StanzaAckParser::handleStartElement(const std::string&, const std::string&,
     if (depth == 0) {
         std::string handledStanzasString = attributes.getAttribute("h");
         try {
-            getElementGeneric()->setHandledStanzasCount(boost::lexical_cast<int>(handledStanzasString));
+            getElementGeneric()->setHandledStanzasCount(boost::lexical_cast<unsigned int>(handledStanzasString));
         }
         catch (const boost::bad_lexical_cast &) {
         }
diff --git a/Swiften/StreamManagement/StanzaAckRequester.cpp b/Swiften/StreamManagement/StanzaAckRequester.cpp
index 8941f4a..a0f5b70 100644
--- a/Swiften/StreamManagement/StanzaAckRequester.cpp
+++ b/Swiften/StreamManagement/StanzaAckRequester.cpp
@@ -1,19 +1,17 @@
 /*
- * Copyright (c) 2010-2016 Isode Limited.
+ * Copyright (c) 2010-2018 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #include <Swiften/StreamManagement/StanzaAckRequester.h>
 
-#include <boost/numeric/conversion/cast.hpp>
-
 #include <Swiften/Base/Log.h>
 #include <Swiften/Elements/Message.h>
 
 namespace Swift {
 
-static const unsigned int MAX_HANDLED_STANZA_COUNT = boost::numeric_cast<unsigned int>((1ULL<<32) - 1);
+static const unsigned int MAX_HANDLED_STANZA_COUNT = static_cast<unsigned int>((1ULL<<32) - 1);
 
 StanzaAckRequester::StanzaAckRequester() : lastHandledStanzasCount(0) {
 
diff --git a/Swiften/StreamManagement/StanzaAckResponder.cpp b/Swiften/StreamManagement/StanzaAckResponder.cpp
index b6171d0..bfe6f4d 100644
--- a/Swiften/StreamManagement/StanzaAckResponder.cpp
+++ b/Swiften/StreamManagement/StanzaAckResponder.cpp
@@ -1,16 +1,14 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2018 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #include <Swiften/StreamManagement/StanzaAckResponder.h>
 
-#include <boost/numeric/conversion/cast.hpp>
-
 namespace Swift {
 
-static const unsigned int MAX_HANDLED_STANZA_COUNT = boost::numeric_cast<unsigned int>((1ULL<<32) - 1);
+static const unsigned int MAX_HANDLED_STANZA_COUNT = static_cast<unsigned int>((1ULL << 32) - 1);
 
 StanzaAckResponder::StanzaAckResponder() : handledStanzasCount(0) {
 }
diff --git a/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp b/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp
index ce16e1f..e0ebefd 100644
--- a/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp
+++ b/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010-2016 Isode Limited.
+ * Copyright (c) 2010-2018 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
+#include <cstdint>
+
 #include <boost/bind.hpp>
-#include <boost/numeric/conversion/cast.hpp>
 
 #include <cppunit/extensions/HelperMacros.h>
 #include <cppunit/extensions/TestFactoryRegistry.h>
@@ -111,7 +112,7 @@ class StanzaAckRequesterTest : public CppUnit::TestFixture {
         // Handle stanza ack count wrapping, as per the XEP
         void testHandleAckReceived_WrapAround() {
             std::shared_ptr<StanzaAckRequester> testling(createRequester());
-            testling->lastHandledStanzasCount = boost::numeric_cast<unsigned int>((1ULL<<32) - 1);
+            testling->lastHandledStanzasCount = UINT32_MAX;
             testling->handleStanzaSent(createMessage("m1"));
             testling->handleStanzaSent(createMessage("m2"));
 
diff --git a/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp b/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp
index ffdabe9..ee4b913 100644
--- a/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp
+++ b/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010-2016 Isode Limited.
+ * Copyright (c) 2010-2018 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
+#include <cstdint>
+
 #include <boost/bind.hpp>
-#include <boost/numeric/conversion/cast.hpp>
 
 #include <cppunit/extensions/HelperMacros.h>
 #include <cppunit/extensions/TestFactoryRegistry.h>
@@ -63,7 +64,7 @@ class StanzaAckResponderTest : public CppUnit::TestFixture {
         // Handle stanza ack count wrapping, as per the XEP
         void testHandleAckRequestReceived_WrapAround() {
             std::shared_ptr<StanzaAckResponder> testling(createResponder());
-            testling->handledStanzasCount = boost::numeric_cast<unsigned int>((1ULL<<32) - 1);
+            testling->handledStanzasCount = UINT32_MAX;
             testling->handleStanzaReceived();
             testling->handleStanzaReceived();
 
-- 
cgit v0.10.2-6-g49f6