aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorCalvin Rose <calsrose@gmail.com>2019-05-09 13:42:14 -0400
committerCalvin Rose <calsrose@gmail.com>2019-05-09 13:42:14 -0400
commit7a313f60386265024634ddb59d417dcd460ce831 (patch)
treedbde8905e9366fd811520233b042ec718b14eebd
parentFix use after free bug in buffer/format when printing self. (diff)
Update CHANGELOG, string/has-suffix?|prefix?
string/has-suffix? and string/has-prefix? can now accept all byte data types for both arguments.
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/core/string.c22
2 files changed, 11 insertions, 12 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a9a61092..75ee05cb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
All notable changes to this project will be documented in this file.
## 0.5.0 - ??
+- Fix some bugs with buffers.
- Add `trace` and `untrace` to the core library.
- Add `string/has-prefix?` and `string/has-suffix?` to string module.
- Add simple debugger to repl that activates on errors or debug signal
diff --git a/src/core/string.c b/src/core/string.c
index 80cd5d44..86699c6d 100644
--- a/src/core/string.c
+++ b/src/core/string.c
@@ -276,24 +276,22 @@ static Janet cfun_string_find(int32_t argc, Janet *argv) {
static Janet cfun_string_hasprefix(int32_t argc, Janet *argv) {
janet_fixarity(argc, 2);
- const uint8_t *prefix = janet_getstring(argv, 0);
- const uint8_t *s = janet_getstring(argv, 1);
- int32_t prefix_len = janet_string_length(prefix);
- int32_t s_len = janet_string_length(s);
- return s_len < prefix_len
+ JanetByteView prefix = janet_getbytes(argv, 0);
+ JanetByteView str = janet_getbytes(argv, 1);
+ return str.len < prefix.len
? janet_wrap_false()
- : janet_wrap_boolean(memcmp(prefix, s, prefix_len) == 0);
+ : janet_wrap_boolean(memcmp(prefix.bytes, str.bytes, prefix.len) == 0);
}
static Janet cfun_string_hassuffix(int32_t argc, Janet *argv) {
janet_fixarity(argc, 2);
- const uint8_t *suffix = janet_getstring(argv, 0);
- const uint8_t *s = janet_getstring(argv, 1);
- int32_t suffix_len = janet_string_length(suffix);
- int32_t s_len = janet_string_length(s);
- return s_len < suffix_len
+ JanetByteView suffix = janet_getbytes(argv, 0);
+ JanetByteView str = janet_getbytes(argv, 1);
+ return str.len < suffix.len
? janet_wrap_false()
- : janet_wrap_boolean(memcmp(suffix, s + s_len - suffix_len, suffix_len) == 0);
+ : janet_wrap_boolean(memcmp(suffix.bytes,
+ str.bytes + str.len - suffix.len,
+ suffix.len) == 0);
}
static Janet cfun_string_findall(int32_t argc, Janet *argv) {