"Dan Kegel" dank@kegel.com writes:
@@ -66,18 +67,29 @@ MSIHANDLE alloc_msihandle( MSIOBJECTHDR
EnterCriticalSection( &MSI_handle_cs );
- if (msihandletable == NULL)
 - {
 msihandletable_size = 256;msihandletable = msi_alloc_zero(msihandletable_size*sizeof(msi_handle_info));- }
 - /* find a slot */
 
- for(i=0; i<MSIMAXHANDLES; i++)
 
- for(i=0; i<msihandletable_size; i++) if( !msihandletable[i].obj ) break;
 
- if( (i>=MSIMAXHANDLES) || msihandletable[i].obj )
 goto out;
- if( i==msihandletable_size )
 - {
 msihandletable_size *= 2;msihandletable = msi_realloc_zero(msihandletable,msihandletable_size*sizeof(msi_handle_info));- }
 
You should check for allocation failures and fail gracefully instead of crashing.