Merge lp:~tangent-org/libmemcached/1.0-build/ Build: jenkins-Libmemcached-188
[awesomized/libmemcached] / libtest / result.cc
index 2bc83171a3b2be4928e66a17cca8570dad286b02..1cf615b156ec0dd0403c6108ba25cf80d498ba6d 100644 (file)
@@ -52,9 +52,45 @@ __success::__success(const char *file_arg, int line_arg, const char *func_arg):
 {
 }
 
-__skipped::__skipped(const char *file_arg, int line_arg, const char *func_arg):
-  __test_result(file_arg, line_arg, func_arg)
+__skipped::__skipped(const char *file_arg, int line_arg, const char *func_arg, ...):
+  __test_result(file_arg, line_arg, func_arg),
+  _error_message(NULL),
+  _error_message_size(0)
+{
+  va_list args;
+  va_start(args, func_arg);
+  const char *format= va_arg(args, const char *);
+  _error_message_size= vasprintf(&_error_message, format, args);
+  assert(_error_message_size != -1);
+  if (_error_message_size > 0)
+  {
+    _error_message_size++;
+  }
+  va_end(args);
+}
+
+__skipped::__skipped( const __skipped& other ) :
+  __test_result(other),
+  _error_message_size(other._error_message_size)
+{
+  _error_message= (char*) malloc(_error_message_size);
+  if (_error_message)
+  {
+    memcpy(_error_message, other._error_message, _error_message_size);
+  }
+  else
+  {
+    _error_message_size= -1;
+  }
+}
+
+__skipped::~__skipped() throw()
 {
+  if ((_error_message_size > 0) and _error_message)
+  {
+    free(_error_message);
+    _error_message= NULL;
+  }
 }
 
 __failure::__failure(const char *file_arg, int line_arg, const char *func_arg, ...) :