"Dan Kegel" <[EMAIL PROTECTED]> 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. -- Alexandre Julliard [EMAIL PROTECTED]