Index: /trunk/src/VBox/Main/include/USBIdDatabase.h
===================================================================
--- /trunk/src/VBox/Main/include/USBIdDatabase.h	(revision 58000)
+++ /trunk/src/VBox/Main/include/USBIdDatabase.h	(revision 58001)
@@ -76,8 +76,8 @@
 {
 protected:
-    static Product productArray[];
-    static const size_t cProducts;
-    static Vendor vendorArray[];
-    static const size_t cVendors;
+    static Product const aProducts[];
+    static const size_t  cProducts;
+    static Vendor const  aVendors[];
+    static const size_t  cVendors;
 
 public:
@@ -85,5 +85,5 @@
     {
         Product lookFor = { USBKEY(vendorId, productId) };
-        Product* it = std::lower_bound(productArray, productArray + cProducts, lookFor, ProductLess());
+        Product const *it = std::lower_bound(aProducts, aProducts + cProducts, lookFor, ProductLess());
         return lookFor.key == it->key ? it->product : NULL;
     }
@@ -92,5 +92,5 @@
     {
         Vendor lookFor = { vendorID };
-        Vendor* it = std::lower_bound(vendorArray, vendorArray + cVendors, lookFor, VendorLess());
+        Vendor const *it = std::lower_bound(aVendors, aVendors + cVendors, lookFor, VendorLess());
         return lookFor.vendorID == it->vendorID ? it->vendor : NULL;
     }
Index: /trunk/src/VBox/Main/src-server/USBIdDatabaseGenerator.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/USBIdDatabaseGenerator.cpp	(revision 58000)
+++ /trunk/src/VBox/Main/src-server/USBIdDatabaseGenerator.cpp	(revision 58001)
@@ -56,5 +56,5 @@
     " * The source of the list is http://www.linux-usb.org/usb.ids\n"
     " */\n"
-    "Product AliasDictionary::productArray[] =\n"
+    "Product const AliasDictionary::aProducts[] =\n"
     "{\n";
 
@@ -62,13 +62,13 @@
     "};\n"
     "\n"
-    "const size_t AliasDictionary::cProducts = sizeof(AliasDictionary::productArray) / sizeof(Product);\n";
+    "const size_t AliasDictionary::cProducts = RT_ELEMENTS(AliasDictionary::aProducts);\n";
 
 const char *vendor_header =
-    "\nVendor AliasDictionary::vendorArray[] =\n"
+    "\nVendor const AliasDictionary::aVendors[] =\n"
     "{\n";
 const char *vendor_footer =
     "};\n"
     "\n"
-    "const size_t AliasDictionary::cVendors = sizeof(AliasDictionary::vendorArray) / sizeof(Vendor);\n";
+    "const size_t AliasDictionary::cVendors = RT_ELEMENTS(AliasDictionary::aVendors);\n";
 
 const char *start_block = "# Vendors, devices and interfaces. Please keep sorted.";
Index: /trunk/src/VBox/Main/src-server/USBIdDatabaseStub.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/USBIdDatabaseStub.cpp	(revision 58000)
+++ /trunk/src/VBox/Main/src-server/USBIdDatabaseStub.cpp	(revision 58001)
@@ -18,7 +18,7 @@
 #include "USBIdDatabase.h"
 
-Product         AliasDictionary::productArray[] = {0};
-const size_t    AliasDictionary::products_size  = 0;
-Vendor          AliasDictionary::vendorArray[]  = {0};
-const size_t    AliasDictionary::vendors_size   = 0;
+Product const   AliasDictionary::productArray[] = {0};
+const size_t    AliasDictionary::cProducts      = 1; /* std::lower_bound cannot deal with empty array */
+Vendor const    AliasDictionary::vendorArray[]  = {0};
+const size_t    AliasDictionary::cVendors       = 1; /* std::lower_bound cannot deal with empty array */
 
