summaryrefslogtreecommitdiff
path: root/st.c
diff options
context:
space:
mode:
authorK.Takata <kentkt@csc.jp>2019-07-30 03:08:33 (GMT)
committer卜部昌平 <shyouhei@ruby-lang.org>2019-10-21 02:14:36 (GMT)
commit375124be51c796a53cce9716e83003ef37c7bcf5 (patch)
tree5203b229f6e5cab7b7dd11ab74121fca8c5853ff /st.c
parente70e81b54e10f1882874884564454f566c41b0dd (diff)
st: Do error check only on non-Ruby
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/2304
Diffstat (limited to 'st.c')
-rw-r--r--st.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/st.c b/st.c
index 5d3588f..5d0c00c 100644
--- a/st.c
+++ b/st.c
@@ -593,9 +593,15 @@ st_init_table_with_size(const struct st_hash_type *type, st_index_t size)
#endif
n = get_power2(size);
+#ifndef RUBY
+ if (n < 0)
+ return NULL;
+#endif
tab = (st_table *) malloc(sizeof (st_table));
+#ifndef RUBY
if (tab == NULL)
return NULL;
+#endif
tab->type = type;
tab->entry_power = n;
tab->bin_power = features[n].bin_power;
@@ -604,17 +610,21 @@ st_init_table_with_size(const struct st_hash_type *type, st_index_t size)
tab->bins = NULL;
else {
tab->bins = (st_index_t *) malloc(bins_size(tab));
+#ifndef RUBY
if (tab->bins == NULL) {
free(tab);
return NULL;
}
+#endif
}
tab->entries = (st_table_entry *) malloc(get_allocated_entries(tab)
* sizeof(st_table_entry));
+#ifndef RUBY
if (tab->entries == NULL) {
st_free_table(tab);
return NULL;
}
+#endif
#ifdef ST_DEBUG
memset(tab->entries, ST_INIT_VAL_BYTE,
get_allocated_entries(tab) * sizeof(st_table_entry));
@@ -1312,24 +1322,30 @@ st_copy(st_table *old_tab)
st_table *new_tab;
new_tab = (st_table *) malloc(sizeof(st_table));
+#ifndef RUBY
if (new_tab == NULL)
return NULL;
+#endif
*new_tab = *old_tab;
if (old_tab->bins == NULL)
new_tab->bins = NULL;
else {
new_tab->bins = (st_index_t *) malloc(bins_size(old_tab));
+#ifndef RUBY
if (new_tab->bins == NULL) {
free(new_tab);
return NULL;
}
+#endif
}
new_tab->entries = (st_table_entry *) malloc(get_allocated_entries(old_tab)
* sizeof(st_table_entry));
+#ifndef RUBY
if (new_tab->entries == NULL) {
st_free_table(new_tab);
return NULL;
}
+#endif
MEMCPY(new_tab->entries, old_tab->entries, st_table_entry,
get_allocated_entries(old_tab));
if (old_tab->bins != NULL)