From 8f19d3aa84c79412485578eeea1784466a7c9bf2 Mon Sep 17 00:00:00 2001 From: ntrifunovic Date: Sun, 27 Sep 2009 18:47:45 +0000 Subject: [PATCH] Added regression test for [ 2857454 ] dereference invalid iterator when lead surrogate was last element of the string git-svn-id: http://svn.code.sf.net/p/utfcpp/code@101 a809a056-fc17-0410-9590-b4f493f8b08e --- .../r2_2_2/basic_functionality.h | 21 +++++++++++++++++++ .../regression_tests/reg_tests_driver.cpp | 1 + 2 files changed, 22 insertions(+) diff --git a/test_drivers/regression_tests/r2_2_2/basic_functionality.h b/test_drivers/regression_tests/r2_2_2/basic_functionality.h index f6315cd..961e36a 100755 --- a/test_drivers/regression_tests/r2_2_2/basic_functionality.h +++ b/test_drivers/regression_tests/r2_2_2/basic_functionality.h @@ -22,3 +22,24 @@ void id_2852872() check(false); } } + +// [ 2857454 ] dereference invalid iterator when lead surrogate was last element of the string +void id_2857454() +{ + const unsigned short lead_surrogate_last[] = {0x65, 0xd800, 0}; + vector utf8_result; + try + { + utf8::utf16to8(lead_surrogate_last, lead_surrogate_last + 2, back_inserter(utf8_result)); + // should throw in the previous line and never get here + } + catch(utf8::invalid_utf16&) + { + // this is what we expect + } + catch(...) + { + // an unexpected exception happened + check(false); + } +} diff --git a/test_drivers/regression_tests/reg_tests_driver.cpp b/test_drivers/regression_tests/reg_tests_driver.cpp index b7e023a..81d97eb 100644 --- a/test_drivers/regression_tests/reg_tests_driver.cpp +++ b/test_drivers/regression_tests/reg_tests_driver.cpp @@ -43,4 +43,5 @@ int main() // Release 2.2.2 //r2_2_2/basic_functionality.h id_2852872(); + id_2857454(); }