authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2019-05-21 15:50:42+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-05-28 17:49:37-04:00
log048169cbea759b3ebf3cf79145a972907b41dc80
tree10d658d9676b608b7f1421cc70c0975078646225
parent9d16839420c674fd7dff0b28b3efcc9a7953ed74

Avoid a crash when there are no namespace components

Fixes #2500

1 files changed, 11 insertions(+), 4 deletions(-)

src/analyze.cpp+11-4
......@@ -3892,10 +3892,17 @@ ZigType *add_source_file(CodeGen *g, ZigPackage *package, Buf *resolved_path, Bu
38923892 buf_init_from_buf(&namespace_name, &package->pkg_path);
38933893 if (source_kind == SourceKindNonRoot) {
38943894 assert(buf_starts_with_buf(resolved_path, &resolved_root_src_dir));
3895
3896 if (buf_len(&namespace_name) != 0) buf_append_char(&namespace_name, NAMESPACE_SEP_CHAR);
3897 buf_append_mem(&namespace_name, buf_ptr(&noextname) + buf_len(&resolved_root_src_dir) + 1,
3898 buf_len(&noextname) - (buf_len(&resolved_root_src_dir) + 1));
3895 if (buf_len(&namespace_name) != 0) {
3896 buf_append_char(&namespace_name, NAMESPACE_SEP_CHAR);
3897 }
3898 // The namespace components are obtained from the relative path to the
3899 // source directory
3900 if (buf_len(&noextname) > buf_len(&resolved_root_src_dir)) {
3901 // Skip the trailing separator
3902 buf_append_mem(&namespace_name,
3903 buf_ptr(&noextname) + buf_len(&resolved_root_src_dir) + 1,
3904 buf_len(&noextname) - buf_len(&resolved_root_src_dir) - 1);
3905 }
38993906 buf_replace(&namespace_name, ZIG_OS_SEP_CHAR, NAMESPACE_SEP_CHAR);
39003907 }
39013908 Buf *bare_name = buf_alloc();