Index: /MOAB/trunk/parallel/MBParallelComm.cpp
===================================================================
--- /MOAB/trunk/parallel/MBParallelComm.cpp (revision 2809)
+++ /MOAB/trunk/parallel/MBParallelComm.cpp (revision 2976)
@@ -42,5 +42,6 @@
 #endif
 
-#define INITIAL_BUFF_SIZE 1024
+const int INITIAL_BUFF_SIZE = 1024;
+const int MAX_BCAST_SIZE = (1<<28);
 
 //#define DEBUG_PACKING 1
@@ -592,8 +593,15 @@
     buff.resize(buff_size);
 
-  success = MPI_Bcast( &buff[0], buff_size, MPI_UNSIGNED_CHAR, from_proc, procConfig.proc_comm() );
-  if (MPI_SUCCESS != success) {
-    result = MB_FAILURE;
-    RRA("MPI_Bcast of buffer failed.");
+  size_t offset = 0;
+  while (buff_size) {
+    int size = std::min( buff_size, MAX_BCAST_SIZE );
+    success = MPI_Bcast( &buff[offset], size, MPI_UNSIGNED_CHAR, from_proc, procConfig.proc_comm() );
+    if (MPI_SUCCESS != success) {
+      result = MB_FAILURE;
+      RRA("MPI_Bcast of buffer failed.");
+    }
+    
+    offset += size;
+    buff_size -= size;
   }
 
