[libxml++] Validator: Make initialize_valid() callable from all subclasses



commit 65be758ef73c223b01deb8525104daad0bbe67f4
Author: Kjell Ahlstedt <kjell ahlstedt bredband net>
Date:   Wed Oct 15 10:53:29 2014 +0200

    Validator: Make initialize_valid() callable from all subclasses
    
    * libxml++/validators/validator.cc: In initialize_valid(), don't initialize
    valid_'s data members, if it's a null pointer.
    * libxml++/validators/schemavalidator.cc: Call the base class version from
    initialize_valid() instead of copying some code from it.

 libxml++/validators/schemavalidator.cc |    5 +----
 libxml++/validators/validator.cc       |   17 +++++++++++------
 2 files changed, 12 insertions(+), 10 deletions(-)
---
diff --git a/libxml++/validators/schemavalidator.cc b/libxml++/validators/schemavalidator.cc
index c51b62c..f16ec55 100644
--- a/libxml++/validators/schemavalidator.cc
+++ b/libxml++/validators/schemavalidator.cc
@@ -150,10 +150,7 @@ const Schema* SchemaValidator::get_schema() const
 void SchemaValidator::initialize_valid()
 {
   xmlSchemaSetValidErrors(ctxt_, &callback_validity_error, &callback_validity_warning, this);
-
-  //Clear these temporary buffers too:
-  validate_error_.erase();
-  validate_warning_.erase();
+  Validator::initialize_valid();
 }
 
 
diff --git a/libxml++/validators/validator.cc b/libxml++/validators/validator.cc
index d073e16..55e3e41 100644
--- a/libxml++/validators/validator.cc
+++ b/libxml++/validators/validator.cc
@@ -26,12 +26,17 @@ Validator::~Validator()
 
 void Validator::initialize_valid()
 {
-  //Tell the validation context about the callbacks:
-  valid_->error = &callback_validity_error;
-  valid_->warning = &callback_validity_warning;
+  // valid_ is used only by DtdValidator.
+  //TODO: When we can break ABI, move valid_ to DtdValidator.
+  if (valid_)
+  {
+    //Tell the validation context about the callbacks:
+    valid_->error = &callback_validity_error;
+    valid_->warning = &callback_validity_warning;
 
-  //Allow the callback_validity_*() methods to retrieve the C++ instance:
-  valid_->userData = this;
+    //Allow the callback_validity_*() methods to retrieve the C++ instance:
+    valid_->userData = this;
+  }
 
   //Clear these temporary buffers too:
   validate_error_.erase();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]