浏览代码

Merge branch 'master' into bignum-arc4

Tatsuhiro Tsujikawa 12 年之前
父节点
当前提交
f2a1d241c2
共有 3 个文件被更改,包括 20 次插入13 次删除
  1. 4 3
      src/DownloadEngine.h
  2. 15 9
      src/InternalMessageDigestImpl.cc
  3. 1 1
      src/MessageDigestImpl.h

+ 4 - 3
src/DownloadEngine.h

@@ -131,8 +131,6 @@ private:
   int64_t refreshInterval_;
   Timer lastRefresh_;
 
-  std::deque<std::unique_ptr<Command>> routineCommands_;
-
   std::unique_ptr<CookieStorage> cookieStorage_;
 
 #ifdef ENABLE_BITTORRENT
@@ -167,11 +165,14 @@ private:
   std::multimap<std::string, SocketPoolEntry>::iterator
   findSocketPoolEntry(const std::string& key);
 
-  std::deque<std::unique_ptr<Command>> commands_;
   std::unique_ptr<RequestGroupMan> requestGroupMan_;
   std::unique_ptr<FileAllocationMan> fileAllocationMan_;
   std::unique_ptr<CheckIntegrityMan> checkIntegrityMan_;
   Option* option_;
+  // Ensure that Commands are cleaned up before requestGroupMan_ is
+  // deleted.
+  std::deque<std::unique_ptr<Command>> routineCommands_;
+  std::deque<std::unique_ptr<Command>> commands_;
 public:
   DownloadEngine(std::unique_ptr<EventPoll> eventPoll);
 

+ 15 - 9
src/InternalMessageDigestImpl.cc

@@ -49,22 +49,27 @@ template<size_t dlen,
          void (*free_fn)(ctx_t**)>
 class MessageDigestBase : public MessageDigestImpl {
 public:
-  MessageDigestBase() { reset(); }
-  virtual ~MessageDigestBase() {
+  MessageDigestBase() : ctx_(nullptr) { reset(); }
+  virtual ~MessageDigestBase()
+  {
     free_fn(&ctx_);
   }
 
-  static  size_t length() {
+  static  size_t length()
+  {
     return dlen;
   }
-  virtual size_t getDigestLength() const CXX11_OVERRIDE {
+  virtual size_t getDigestLength() const CXX11_OVERRIDE
+  {
     return dlen;
   }
-  virtual void reset() CXX11_OVERRIDE {
-    printf("hash-%d\n", dlen);
+  virtual void reset() CXX11_OVERRIDE
+  {
+    free_fn(&ctx_);
     init_fn(&ctx_);
   }
-  virtual void update(const void* data, size_t length) CXX11_OVERRIDE {
+  virtual void update(const void* data, size_t length) CXX11_OVERRIDE
+  {
     auto bytes = reinterpret_cast<const char*>(data);
     while (length) {
       size_t l = std::min(length, (size_t)std::numeric_limits<uint32_t>::max());
@@ -73,7 +78,8 @@ public:
       bytes += l;
     }
   }
-  virtual void digest(unsigned char* md) CXX11_OVERRIDE {
+  virtual void digest(unsigned char* md) CXX11_OVERRIDE
+  {
     final_fn(ctx_, md);
   }
 private:
@@ -99,7 +105,7 @@ MessageDigestSHA1;
 
 std::unique_ptr<MessageDigestImpl> MessageDigestImpl::sha1()
 {
-  return std::unique_ptr<MessageDigestImpl>(new MessageDigestSHA1());
+  return make_unique<MessageDigestSHA1>();
 }
 
 MessageDigestImpl::hashes_t MessageDigestImpl::hashes = {

+ 1 - 1
src/MessageDigestImpl.h

@@ -40,7 +40,7 @@
 
 #include <string>
 #include <memory>
-#include <functional> 
+#include <functional>
 #include <map>
 #include <tuple>