Index: /trunk/include/VBox/com/array.h
===================================================================
--- /trunk/include/VBox/com/array.h	(revision 50415)
+++ /trunk/include/VBox/com/array.h	(revision 50416)
@@ -4,5 +4,5 @@
 
 /*
- * Copyright (C) 2006-2013 Oracle Corporation
+ * Copyright (C) 2006-2014 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -642,19 +642,16 @@
     SafeArray(ComSafeArrayIn(T, aArg))
     {
-#ifdef VBOX_WITH_XPCOM
-
-        AssertReturnVoid(aArg != NULL);
-
-        m.size = aArgSize;
-        m.arr = aArg;
-        m.isWeak = true;
+        if (aArg)
+        {
+#ifdef VBOX_WITH_XPCOM
+
+            m.size = aArgSize;
+            m.arr = aArg;
+            m.isWeak = true;
 
 #else /* !VBOX_WITH_XPCOM */
 
-        AssertReturnVoid(aArg != NULL);
-        SAFEARRAY *arg = aArg;
-
-        if (arg)
-        {
+            SAFEARRAY *arg = aArg;
+
             AssertReturnVoid(arg->cDims == 1);
 
@@ -676,10 +673,10 @@
             rc = SafeArrayAccessData(arg, (void HUGEP **)&m.raw);
             AssertComRCReturnVoid(rc);
-        }
-
-        m.arr = arg;
-        m.isWeak = true;
+
+            m.arr = arg;
+            m.isWeak = true;
 
 #endif /* !VBOX_WITH_XPCOM */
+        }
     }
 
@@ -1017,5 +1014,5 @@
     virtual SafeArray &detachTo(ComSafeArrayOut(T, aArg))
     {
-        AssertReturn(m.isWeak == false, *this);
+        AssertReturn(!m.isWeak, *this);
 
 #ifdef VBOX_WITH_XPCOM
@@ -1593,19 +1590,16 @@
     SafeIfaceArray(ComSafeArrayIn(I *, aArg))
     {
-#ifdef VBOX_WITH_XPCOM
-
-        AssertReturnVoid(aArg != NULL);
-
-        Base::m.size = aArgSize;
-        Base::m.arr = aArg;
-        Base::m.isWeak = true;
+        if (aArg)
+        {
+#ifdef VBOX_WITH_XPCOM
+
+            Base::m.size = aArgSize;
+            Base::m.arr = aArg;
+            Base::m.isWeak = true;
 
 #else /* !VBOX_WITH_XPCOM */
 
-        AssertReturnVoid(aArg != NULL);
-        SAFEARRAY *arg = aArg;
-
-        if (arg)
-        {
+            SAFEARRAY *arg = aArg;
+
             AssertReturnVoid(arg->cDims == 1);
 
@@ -1625,10 +1619,10 @@
             rc = SafeArrayAccessData(arg, (void HUGEP **)&m.raw);
             AssertComRCReturnVoid(rc);
-        }
-
-        m.arr = arg;
-        m.isWeak = true;
+
+            m.arr = arg;
+            m.isWeak = true;
 
 #endif /* !VBOX_WITH_XPCOM */
+        }
     }
 
Index: /trunk/src/VBox/Main/include/Wrapper.h
===================================================================
--- /trunk/src/VBox/Main/include/Wrapper.h	(revision 50415)
+++ /trunk/src/VBox/Main/include/Wrapper.h	(revision 50416)
@@ -149,11 +149,11 @@
     ArrayBSTRInConverter(ComSafeArrayIn(IN_BSTR, aSrc))
     {
-        /** @todo How to handle ComSafeArrayInIsNull(aSrc)?  Is it appropriate to
-         *        assert everywhere like we currently do?  It wasn't for the
-         *        ArrayInConverter class (IAppliance::importMachines)... */
-        com::SafeArray<IN_BSTR> inArray(ComSafeArrayInArg(aSrc));
-        mArray.resize(inArray.size());
-        for (size_t i = 0; i < inArray.size(); i++)
-            mArray[i] = inArray[i];
+        if (!ComSafeArrayInIsNull(aSrc))
+        {
+            com::SafeArray<IN_BSTR> inArray(ComSafeArrayInArg(aSrc));
+            mArray.resize(inArray.size());
+            for (size_t i = 0; i < inArray.size(); i++)
+                mArray[i] = inArray[i];
+        }
     }
 
@@ -382,11 +382,11 @@
     ArrayComTypeInConverter(ComSafeArrayIn(A *, aSrc))
     {
-        /** @todo How to handle ComSafeArrayInIsNull(aSrc)?  Is it appropriate to
-         *        assert everywhere like we currently do?  It wasn't for the
-         *        ArrayInConverter class (IAppliance::importMachines)... */
-        com::SafeIfaceArray<A> inArray(ComSafeArrayInArg(aSrc));
-        mArray.resize(inArray.size());
-        for (size_t i = 0; i < inArray.size(); i++)
-            mArray[i] = inArray[i];
+        if (!ComSafeArrayInIsNull(aSrc))
+        {
+            com::SafeIfaceArray<A> inArray(ComSafeArrayInArg(aSrc));
+            mArray.resize(inArray.size());
+            for (size_t i = 0; i < inArray.size(); i++)
+                mArray[i] = inArray[i];
+        }
     }
 
