supportedExtensions() returned its static set by value, so capabilities() constructed the extension vector from begin() of one temporary and end() of another. That range is undefined behavior. libstdc++ and libc++ release iterators happened to walk the first copy to completion, but the MSVC debug STL rejects it in _Verify_range with a modal "Microsoft Visual C++ Runtime Library" assertion dialog. HandlerRegistry::selectBest calls capabilities() for every candidate, so every lines: search and every applyExtractScope call hung forever on Windows Debug builds. Return the shared set by const reference and take begin()/end() from that one instance. New text_basic_handler unit tests pin the shared instance, the capability list, registry selection and line-range extraction; the old code also fails them under -D_GLIBCXX_DEBUG with "function requires a valid iterator range". Signed-off-by: trvon <me@trevon.dev> |
||
|---|---|---|
| .. | ||
| builtin_content_extractor_catch2_test.cpp | ||
| external_plugin_extractor_test.cpp | ||
| html_extractor_robust_test.cpp | ||
| jsonrpc_client_test.cpp | ||
| plain_text_extractor_catch2_test.cpp | ||
| plugin_process_launcher_test.cpp | ||
| plugin_process_minimal_test.cpp | ||
| plugin_process_test.cpp | ||
| text_basic_handler_catch2_test.cpp | ||
| text_extraction_fts5_pipeline_test.cpp | ||