aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtins/channel.c7
-rw-r--r--builtins/channel.h2
-rw-r--r--compile.c2
3 files changed, 6 insertions, 5 deletions
diff --git a/builtins/channel.c b/builtins/channel.c
index e4683aa3..dba50115 100644
--- a/builtins/channel.c
+++ b/builtins/channel.c
@@ -14,18 +14,19 @@
#include "array.h"
#include "functions.h"
#include "halfsiphash.h"
+#include "integers.h"
#include "types.h"
#include "util.h"
-public channel_t *Channel$new(int64_t max_size)
+public channel_t *Channel$new(Int_t max_size)
{
- if (max_size <= 0)
+ if (Int$compare_value(max_size, I(0)) <= 0)
fail("Cannot create a channel with a size less than one: %ld", max_size);
channel_t *channel = new(channel_t);
channel->items = (array_t){};
channel->mutex = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;
channel->cond = (pthread_cond_t)PTHREAD_COND_INITIALIZER;
- channel->max_size = max_size;
+ channel->max_size = Int$as_i64(max_size);
return channel;
}
diff --git a/builtins/channel.h b/builtins/channel.h
index 6f628726..c5a612ce 100644
--- a/builtins/channel.h
+++ b/builtins/channel.h
@@ -9,7 +9,7 @@
#include "types.h"
#include "util.h"
-channel_t *Channel$new(int64_t max_size);
+channel_t *Channel$new(Int_t max_size);
void Channel$push(channel_t *channel, const void *item, int64_t padded_item_size);
#define Channel$push_value(channel, item, padded_item_size) ({ __typeof(item) _item = item; Channel$push(channel, &_item, padded_item_size); })
void Channel$push_all(channel_t *channel, array_t to_push, int64_t padded_item_size);
diff --git a/compile.c b/compile.c
index c8edd5fb..eb054a6b 100644
--- a/compile.c
+++ b/compile.c
@@ -1850,7 +1850,7 @@ CORD compile(env_t *env, ast_t *ast)
code_err(chan->max_size, "This value must be an integer, not %T", get_type(env, chan->max_size));
return CORD_all("Channel$new(", max_size, ")");
} else {
- return "Channel$new(INT64_MAX)";
+ return "Channel$new(I(INT32_MAX))";
}
}
case Table: {