Commit 04664f0e authored by Pieter Hintjens's avatar Pieter Hintjens

Problem: 'bool' is not defined by default

zmq_atomic_counter_dec returned a 'bool' value, yet this isn't
defined by standard, so causes compile errors in upstream code.

Solution: return an int that can be safely converted to bool if
needed by bindings.
parent ae53b27b
...@@ -9,7 +9,7 @@ zmq_atomic_counter_dec - decrement an atomic counter ...@@ -9,7 +9,7 @@ zmq_atomic_counter_dec - decrement an atomic counter
SYNOPSIS SYNOPSIS
-------- --------
*bool zmq_atomic_counter_dec (void *counter);* *int zmq_atomic_counter_dec (void *counter);*
DESCRIPTION DESCRIPTION
...@@ -21,8 +21,8 @@ operations. ...@@ -21,8 +21,8 @@ operations.
RETURN VALUE RETURN VALUE
------------ ------------
The _zmq_atomic_counter_dec()_ function returns true if the counter is The _zmq_atomic_counter_dec()_ function returns 1 if the counter is
greater than zero after decrementing, or false if the counter reached greater than zero after decrementing, or zero if the counter reached
zero. zero.
...@@ -36,13 +36,14 @@ assert (zmq_atomic_counter_inc (counter) == 0); ...@@ -36,13 +36,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----
......
...@@ -36,13 +36,14 @@ assert (zmq_atomic_counter_inc (counter) == 0); ...@@ -36,13 +36,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----
......
...@@ -35,13 +35,14 @@ assert (zmq_atomic_counter_inc (counter) == 0); ...@@ -35,13 +35,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----
......
...@@ -36,13 +36,14 @@ assert (zmq_atomic_counter_inc (counter) == 0); ...@@ -36,13 +36,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----
......
...@@ -35,13 +35,14 @@ assert (zmq_atomic_counter_inc (counter) == 0); ...@@ -35,13 +35,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----
......
...@@ -34,13 +34,14 @@ assert (zmq_atomic_counter_inc (counter) == 0); ...@@ -34,13 +34,14 @@ assert (zmq_atomic_counter_inc (counter) == 0);
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0;
---- ----
......
...@@ -440,7 +440,7 @@ ZMQ_EXPORT int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key); ...@@ -440,7 +440,7 @@ ZMQ_EXPORT int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key);
ZMQ_EXPORT void *zmq_atomic_counter_new (void); ZMQ_EXPORT void *zmq_atomic_counter_new (void);
ZMQ_EXPORT void zmq_atomic_counter_set (void *counter, int value); ZMQ_EXPORT void zmq_atomic_counter_set (void *counter, int value);
ZMQ_EXPORT int zmq_atomic_counter_inc (void *counter); ZMQ_EXPORT int zmq_atomic_counter_inc (void *counter);
ZMQ_EXPORT bool zmq_atomic_counter_dec (void *counter); ZMQ_EXPORT int zmq_atomic_counter_dec (void *counter);
ZMQ_EXPORT int zmq_atomic_counter_value (void *counter); ZMQ_EXPORT int zmq_atomic_counter_value (void *counter);
ZMQ_EXPORT void zmq_atomic_counter_destroy (void **counter_p); ZMQ_EXPORT void zmq_atomic_counter_destroy (void **counter_p);
......
...@@ -232,11 +232,12 @@ int zmq_atomic_counter_inc (void *counter_) ...@@ -232,11 +232,12 @@ int zmq_atomic_counter_inc (void *counter_)
return ((zmq::atomic_counter_t *) counter_)->add (1); return ((zmq::atomic_counter_t *) counter_)->add (1);
} }
// Decrement the atomic counter and return true if still > zero // Decrement the atomic counter and return 1 (if counter >= 1), or
// 0 if counter hit zero.
bool zmq_atomic_counter_dec (void *counter_) int zmq_atomic_counter_dec (void *counter_)
{ {
return ((zmq::atomic_counter_t *) counter_)->sub (1); return ((zmq::atomic_counter_t *) counter_)->sub (1)? 1: 0;
} }
// Return actual value of atomic counter // Return actual value of atomic counter
......
...@@ -27,12 +27,12 @@ int main (void) ...@@ -27,12 +27,12 @@ int main (void)
assert (zmq_atomic_counter_inc (counter) == 1); assert (zmq_atomic_counter_inc (counter) == 1);
assert (zmq_atomic_counter_inc (counter) == 2); assert (zmq_atomic_counter_inc (counter) == 2);
assert (zmq_atomic_counter_value (counter) == 3); assert (zmq_atomic_counter_value (counter) == 3);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_set (counter, 2); zmq_atomic_counter_set (counter, 2);
assert (zmq_atomic_counter_dec (counter) == true); assert (zmq_atomic_counter_dec (counter) == 1);
assert (zmq_atomic_counter_dec (counter) == false); assert (zmq_atomic_counter_dec (counter) == 0);
zmq_atomic_counter_destroy (&counter); zmq_atomic_counter_destroy (&counter);
return 0; return 0;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment