From 9e0b874b42875947bf558de8d6dcb0d89e480ba3 Mon Sep 17 00:00:00 2001
From: Vasileios Karakasis <karakasis@cscs.ch>
Date: Thu, 27 Oct 2016 14:25:58 +0200
Subject: [PATCH] Addresses PR comments.

---
 modcc/module.cpp | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/modcc/module.cpp b/modcc/module.cpp
index 509d7755..3e8fe3d7 100644
--- a/modcc/module.cpp
+++ b/modcc/module.cpp
@@ -31,21 +31,18 @@ Module::Module(std::string const& fname)
     buffer_[size] = 0; // append \0 to terminate string
 }
 
-Module::Module(std::vector<char> const& buffer)
-{
+Module::Module(std::vector<char> const& buffer) {
     buffer_ = buffer;
 
     // add \0 to end of buffer if not already present
-    if(buffer_[buffer_.size()-1] != 0)
+    if (buffer_[buffer_.size()-1] != 0)
         buffer_.push_back(0);
 }
 
-Module::Module(const char* buffer, size_t count)
-{
-    for (auto i = 0; i < count-1 && *buffer != '\0'; ++buffer) {
-        buffer_.push_back(*buffer);
-    }
-
+Module::Module(const char* buffer, size_t count) {
+    auto size = std::distance(buffer, std::find(buffer, buffer+count, '\0'));
+    buffer_.reserve(size+1);
+    buffer_.insert(buffer_.end(), buffer, buffer+size);
     buffer_.push_back(0);
 }
 
-- 
GitLab