]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug 4594: build failure with clang 3.9
authorAmos Jeffries <squid3@treenet.co.nz>
Sat, 24 Sep 2016 22:36:05 +0000 (11:36 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Sat, 24 Sep 2016 22:36:05 +0000 (11:36 +1300)
src/adaptation/ecap/XactionRep.cc
src/adaptation/icap/Xaction.cc
src/base/AsyncJob.cc
src/base/InstanceId.h
src/ssl/PeerConnector.cc

index 3d242f9491856bacbc3af5986049292384f404dc..8ec628d92844f8b359f3488e538c03f625354c0a 100644 (file)
@@ -726,7 +726,7 @@ Adaptation::Ecap::XactionRep::status() const
             buf.append(" A?", 3);
     }
 
-    buf.Printf(" %s%u]", id.Prefix, id.value);
+    buf.Printf(" %s%u]", id.prefix(), id.value);
 
     buf.terminate();
 
index bea002674893b38763e71b55dbed6419fd5b01ad..1181c5dfac93dbfb75ae9c9f3de168ac48e9145d 100644 (file)
@@ -598,9 +598,7 @@ const char *Adaptation::Icap::Xaction::status() const
     fillPendingStatus(buf);
     buf.append("/", 1);
     fillDoneStatus(buf);
-
-    buf.Printf(" %s%u]", id.Prefix, id.value);
-
+    buf.Printf(" %s%u]", id.prefix(), id.value);
     buf.terminate();
 
     return buf.content();
index 79ca7de4507d92f54a2e9ade34ef7d181762b97a..80dcf936db000a5cf7faede2679215278ffa11be 100644 (file)
@@ -164,7 +164,7 @@ const char *AsyncJob::status() const
         buf.Printf("Stopped, reason:");
         buf.Printf("%s",stopReason);
     }
-    buf.Printf(" %s%u]", id.Prefix, id.value);
+    buf.Printf(" %s%u]", id.prefix(), id.value);
     buf.terminate();
 
     return buf.content();
index c64f9df13d00c7c56428417a97c4d118b096ada1..2e2c457d92946191ba5024d6ca5cb6448491ad39 100644 (file)
@@ -25,35 +25,41 @@ class InstanceId
 public:
     typedef unsigned int Value; ///< id storage type; \todo: parameterize?
 
-    InstanceId(): value(++Last ? Last : ++Last) {}
+    InstanceId(): value(0) {change();}
 
     operator Value() const { return value; }
     bool operator ==(const InstanceId &o) const { return value == o.value; }
     bool operator !=(const InstanceId &o) const { return !(*this == o); }
-    void change() {value = ++Last ? Last : ++Last;}
+    void change();
 
-    /// prints Prefix followed by ID value; \todo: use HEX for value printing?
+    /// prints class-pecific prefix followed by ID value; \todo: use HEX for value printing?
     std::ostream &print(std::ostream &os) const;
 
+    /// returns the class-pecific prefix
+    const char * const prefix() const;
+
 public:
-    static const char *Prefix; ///< Class shorthand string for debugging
     Value value; ///< instance identifier
 
 private:
     InstanceId(const InstanceId& right); ///< not implemented; IDs are unique
     InstanceId& operator=(const InstanceId &right); ///< not implemented
-
-private:
-    static Value Last; ///< the last used ID value
 };
 
 /// convenience macro to instantiate Class-specific stuff in .cc files
-#define InstanceIdDefinitions(Class, prefix) \
-    template<> const char *InstanceId<Class>::Prefix = prefix; \
-    template<> InstanceId<Class>::Value InstanceId<Class>::Last = 0; \
+#define InstanceIdDefinitions(Class, pfx) \
+    template<> const char * const \
+    InstanceId<Class>::prefix() const { \
+        return pfx; \
+    } \
     template<> std::ostream & \
     InstanceId<Class>::print(std::ostream &os) const { \
-        return os << Prefix << value; \
+        return os << pfx << value; \
+    } \
+    template<> void \
+    InstanceId<Class>::change() { \
+        static InstanceId<Class>::Value Last = 0; \
+        value = ++Last ? Last : ++Last; \
     }
 
 /// print the id
index 8760f6c3798b82663e043a2346631c11773fde1a..9d1184591b079ac2d74bcf2b896e39f6324476ec 100644 (file)
@@ -771,7 +771,7 @@ Ssl::PeerConnector::status() const
     }
     if (serverConn != NULL)
         buf.Printf(" FD %d", serverConn->fd);
-    buf.Printf(" %s%u]", id.Prefix, id.value);
+    buf.Printf(" %s%u]", id.prefix(), id.value);
     buf.terminate();
 
     return buf.content();