diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-03-28 18:58:03 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-03-28 18:58:03 +0200 |
commit | f5b85ddc9a0e3ac4bb8a200d2ab1a05d5ca9f41b (patch) | |
tree | 8364cbe3ccd627fab9db7bd857d2e325d3dfed49 /libxsde/xsde/cxx/serializer/validating/string-common.cxx | |
parent | b2ad4a54b5436ea57205595dbb6322952eb06318 (diff) |
Validate facets in C++/Hybrid enum parser/serializer implementations
Diffstat (limited to 'libxsde/xsde/cxx/serializer/validating/string-common.cxx')
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/string-common.cxx | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libxsde/xsde/cxx/serializer/validating/string-common.cxx b/libxsde/xsde/cxx/serializer/validating/string-common.cxx index 20a1b34..c9c70b8 100644 --- a/libxsde/xsde/cxx/serializer/validating/string-common.cxx +++ b/libxsde/xsde/cxx/serializer/validating/string-common.cxx @@ -16,18 +16,24 @@ namespace xsde { void string_common:: validate_facets (const char* s, -#ifdef XSDE_STL - size_t n, -#endif const string_facets::facets& f, context& ctx) { -#ifndef XSDE_STL - size_t n; - if (f.length_set_ || f.min_length_set_ || f.max_length_set_) - n = strlen (s); -#endif + if (f.length_set_ || + f.min_length_set_ || + f.max_length_set_ || + f.enum_count_ != 0) + { + validate_facets (s, strlen (s), f, ctx); + } + } + void string_common:: + validate_facets (const char* s, + size_t n, + const string_facets::facets& f, + context& ctx) + { if (f.length_set_ && n != f.length_) { ctx.schema_error (schema_error::length_not_equal_prescribed); |