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...@@ -3892,10 +3892,17 @@ ZigType *add_source_file(CodeGen *g, ZigPackage *package, Buf *resolved_path, Bu
3892 buf_init_from_buf(&namespace_name, &package->pkg_path);3892 buf_init_from_buf(&namespace_name, &package->pkg_path);
3893 if (source_kind == SourceKindNonRoot) {3893 if (source_kind == SourceKindNonRoot) {
3894 assert(buf_starts_with_buf(resolved_path, &resolved_root_src_dir));3894 assert(buf_starts_with_buf(resolved_path, &resolved_root_src_dir));
38953895 if (buf_len(&namespace_name) != 0) {
3896 if (buf_len(&namespace_name) != 0) buf_append_char(&namespace_name, NAMESPACE_SEP_CHAR);3896 buf_append_char(&namespace_name, NAMESPACE_SEP_CHAR);
3897 buf_append_mem(&namespace_name, buf_ptr(&noextname) + buf_len(&resolved_root_src_dir) + 1,3897 }
3898 buf_len(&noextname) - (buf_len(&resolved_root_src_dir) + 1));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 }
3899 buf_replace(&namespace_name, ZIG_OS_SEP_CHAR, NAMESPACE_SEP_CHAR);3906 buf_replace(&namespace_name, ZIG_OS_SEP_CHAR, NAMESPACE_SEP_CHAR);
3900 }3907 }
3901 Buf *bare_name = buf_alloc();3908 Buf *bare_name = buf_alloc();