diff --git a/parser_cpp/logica_parse.cpp b/parser_cpp/logica_parse.cpp index b82fad2..7d78df5 100644 --- a/parser_cpp/logica_parse.cpp +++ b/parser_cpp/logica_parse.cpp @@ -2288,7 +2288,9 @@ static std::vector SplitLogicapath(const char* lp) { size_t pos = s.find(':', start); if (pos == std::string::npos) pos = s.size(); std::string part = s.substr(start, pos - start); - if (!part.empty()) roots.push_back(part); + // Preserve empty segments: in PATH-like variables (and in python's + // LOGICAPATH parsing), an empty entry means "current directory". + roots.push_back(part); start = pos + 1; } return roots; @@ -2413,7 +2415,8 @@ int main(int argc, char** argv) { size_t pos = s.find(':', start); if (pos == std::string::npos) pos = s.size(); std::string part = s.substr(start, pos - start); - if (!part.empty()) import_root.push_back(part); + // Preserve empty segments (see SplitLogicapath). + import_root.push_back(part); start = pos + 1; } } diff --git a/parser_cpp/logica_parse_cpp.py b/parser_cpp/logica_parse_cpp.py index 13dd978..aa0a5ac 100644 --- a/parser_cpp/logica_parse_cpp.py +++ b/parser_cpp/logica_parse_cpp.py @@ -278,7 +278,7 @@ def _LogicapathFromImportRoot(import_root) -> Optional[str]: if isinstance(import_root, str): return import_root if isinstance(import_root, (list, tuple)): - return ':'.join([str(x) for x in import_root if x]) + return ':'.join([str(x) for x in import_root]) raise TypeError('Unexpected import_root type: %r' % (type(import_root),))