diff --git a/compiler/scanner.v b/compiler/scanner.v index 4df09115cd..30c86fc0e6 100644 --- a/compiler/scanner.v +++ b/compiler/scanner.v @@ -45,7 +45,7 @@ fn new_scanner(file_path string) &Scanner { if c_text[0] == 0xEF && c_text[1] == 0xBB && c_text[2] == 0xBF { // skip three BOM bytes offset_from_begin := 3 - raw_text = tos(c_text[offset_from_begin], C.strlen(c_text) - offset_from_begin) + raw_text = tos(c_text[offset_from_begin], vstrlen(c_text) - offset_from_begin) } } diff --git a/vlib/builtin/builtin.v b/vlib/builtin/builtin.v index b16c8e57c9..686f4bca93 100644 --- a/vlib/builtin/builtin.v +++ b/vlib/builtin/builtin.v @@ -17,17 +17,19 @@ fn on_panic(f fn (int) int) { // TODO } +fn C.backtrace(voidptr, int) int + pub fn print_backtrace_skipping_top_frames(skipframes int) { $if mac { buffer := [100]byteptr - nr_ptrs := C.backtrace(buffer, 100) - C.backtrace_symbols_fd(&buffer[skipframes], nr_ptrs-skipframes, 1) + nr_ptrs := C.backtrace(*voidptr(buffer), 100) + C.backtrace_symbols_fd(*voidptr(&buffer[skipframes]), nr_ptrs-skipframes, 1) return } $if linux { if C.backtrace_symbols_fd != 0 { buffer := [100]byteptr - nr_ptrs := C.backtrace(buffer, 100) + nr_ptrs := C.backtrace(*voidptr(buffer), 100) C.backtrace_symbols_fd(&buffer[skipframes], nr_ptrs-skipframes, 1) return }else{ diff --git a/vlib/builtin/int.v b/vlib/builtin/int.v index 00ceb116c8..d6d7a97cb7 100644 --- a/vlib/builtin/int.v +++ b/vlib/builtin/int.v @@ -9,20 +9,20 @@ module builtin pub fn (d f64) str() string { buf := malloc(sizeof(double) * 5 + 1)// TODO - C.sprintf(buf, '%f', d) - return tos(buf, strlen(buf)) + C.sprintf(*char(buf), '%f', d) + return tos(buf, vstrlen(buf)) } pub fn (d f32) str() string { buf := malloc(sizeof(double) * 5 + 1)// TODO - C.sprintf(buf, '%f', d) - return tos(buf, strlen(buf)) + C.sprintf(*char(buf), '%f', d) + return tos(buf, vstrlen(buf)) } pub fn ptr_str(ptr voidptr) string { buf := malloc(sizeof(double) * 5 + 1)// TODO - C.sprintf(buf, '%p', ptr) - return tos(buf, strlen(buf)) + C.sprintf(*char(buf), '%p', ptr) + return tos(buf, vstrlen(buf)) } // compare floats using C epsilon @@ -160,7 +160,7 @@ pub fn (n int) hex() string { 11 } hex := malloc(len) // 0x + \n - count := int(C.sprintf(hex, '0x%x', n)) + count := int(C.sprintf(*char(hex), '0x%x', n)) return tos(hex, count) } @@ -171,7 +171,7 @@ pub fn (n i64) hex() string { 19 } hex := malloc(len) - count := int(C.sprintf(hex, '0x%x', n)) + count := int(C.sprintf(*char(hex), '0x%llx', n)) return tos(hex, count) } diff --git a/vlib/builtin/map.v b/vlib/builtin/map.v index 17bd44561c..0720770ba1 100644 --- a/vlib/builtin/map.v +++ b/vlib/builtin/map.v @@ -211,7 +211,7 @@ pub fn (m mut map) delete(key string) { m.size-- } -pub fn (m map) exists(key string) bool { +pub fn (m map) exists(key string) { panic('map.exists(key) was removed from the language. Use `key in map` instead.') } diff --git a/vlib/builtin/string.v b/vlib/builtin/string.v index 76e2a48f16..ac715a4561 100644 --- a/vlib/builtin/string.v +++ b/vlib/builtin/string.v @@ -22,6 +22,10 @@ pub: // For C strings only fn C.strlen(s byteptr) int +pub fn vstrlen(s byteptr) int { + return C.strlen(*char(s)) +} + fn todo() { } // Converts a C string to a V string. @@ -50,7 +54,7 @@ fn tos2(s byteptr) string { if isnil(s) { panic('tos2: nil string') } - len := C.strlen(s) + len := vstrlen(s) res := tos(s, len) return res } diff --git a/vlib/builtin/utf8.v b/vlib/builtin/utf8.v index 975ad1c03b..c3352bc0a2 100644 --- a/vlib/builtin/utf8.v +++ b/vlib/builtin/utf8.v @@ -4,8 +4,8 @@ module builtin -pub fn utf8_char_len(b byte) int { - return (( 0xe5000000 >> (( b >> 3 ) & 0x1e )) & 3 ) + 1 +pub fn utf8_char_len(b byte) int { + return (( 0xe5000000 >> (( b >> 3 ) & 0x1e )) & 3 ) + 1 } // Convert utf32 to utf8 @@ -157,12 +157,11 @@ fn utf8_len(c byte) int { pub fn utf8_getchar() int { c := int(C.getchar()) len := utf8_len(~c) - if c < 0 { return 0 - } else if (len == 0) { + } else if len == 0 { return c - } else if (len == 1) { + } else if len == 1 { return -1 } else { mut uc := int(c & ((1 << (7 - len)) - 1)) @@ -171,7 +170,7 @@ pub fn utf8_getchar() int { if c2 != -1 && (c2 >> 6) == 2 { uc <<= 6 uc |= int((c2 & 63)) - } else if (c2 == -1) { + } else if c2 == -1 { return 0 } else { return -1 diff --git a/vlib/os/os.v b/vlib/os/os.v index 31fef7e5c1..74d1e0b5dd 100644 --- a/vlib/os/os.v +++ b/vlib/os/os.v @@ -138,7 +138,7 @@ pub fn read_lines(path string) []string { mut buf_index := 0 for C.fgets(buf + buf_index, buf_len - buf_index, fp) != 0 { - len := C.strlen(buf) + len := vstrlen(buf) if len == buf_len - 1 && buf[len - 1] != 10 { buf_len *= 2 buf = C.realloc(buf, buf_len) @@ -307,7 +307,7 @@ pub fn exec(cmd string) ?Result { buf := [1000]byte mut res := '' for C.fgets(buf, 1000, f) != 0 { - res += tos(buf, strlen(buf)) + res += tos(buf, vstrlen(buf)) } res = res.trim_space() exit_code := pclose(f) @@ -709,7 +709,7 @@ pub fn realpath(fpath string) string { res = int( C.realpath( fpath.str, fullpath ) ) } if res != 0 { - return string(fullpath, strlen(fullpath)) + return string(fullpath, vstrlen(fullpath)) } return fpath } diff --git a/vlib/os/os_nix.v b/vlib/os/os_nix.v index 8077ce849a..f06c9b7733 100644 --- a/vlib/os/os_nix.v +++ b/vlib/os/os_nix.v @@ -22,7 +22,7 @@ pub fn get_error_msg(code int) string { if _ptr_text == 0 { return '' } - return tos(_ptr_text, C.strlen(_ptr_text)) + return tos(_ptr_text, vstrlen(_ptr_text)) } pub fn ls(path string) []string { diff --git a/vlib/os/os_win.v b/vlib/os/os_win.v index b41fba8870..2ec909f78d 100644 --- a/vlib/os/os_win.v +++ b/vlib/os/os_win.v @@ -186,5 +186,5 @@ pub fn get_error_msg(code int) string { if _ptr_text == 0 { // compare with null return '' } - return tos(_ptr_text, C.strlen(_ptr_text)) + return tos(_ptr_text, vstrlen(_ptr_text)) }