]> granicus.if.org Git - icu/commitdiff
ICU-9549 re-simplify logic in _copy_ptr()
authorMarkus Scherer <markus.icu@gmail.com>
Fri, 12 Oct 2012 23:18:49 +0000 (23:18 +0000)
committerMarkus Scherer <markus.icu@gmail.com>
Fri, 12 Oct 2012 23:18:49 +0000 (23:18 +0000)
X-SVN-Rev: 32627

icu4c/source/i18n/decimfmt.cpp

index 26f2c653f10d5db8e5a95cea382576a256c5d418..a4cfa8d9e806f6587c64fc238aa9a4e529132f9a 100644 (file)
@@ -693,26 +693,23 @@ DecimalFormat::DecimalFormat(const DecimalFormat &source) :
 
 template <class T>
 static void _copy_ptr(T** pdest, const T* source) {
-    if (source != NULL && *pdest != NULL) {
-        **pdest = *source;
-    } else if (*pdest != NULL) {
+    if (source == NULL) {
         delete *pdest;
         *pdest = NULL;
-    } else if (source != NULL) {
+    } else if (*pdest == NULL) {
         *pdest = new T(*source);
+    } else {
+        **pdest = *source;
     }
-    // Both source and pdest are null, don't need to do anything.
 }
 
 template <class T>
 static void _clone_ptr(T** pdest, const T* source) {
-    if (*pdest != NULL) {
-      delete *pdest;
-    }
+    delete *pdest;
     if (source == NULL) {
-      *pdest = NULL;
+        *pdest = NULL;
     } else {
-      *pdest = static_cast<T*>(source->clone());
+        *pdest = static_cast<T*>(source->clone());
     }
 }