Just a note that memcpy_s doesn't do much other than make your code non-portable. You're better off avoiding malloc in the first place than using a slightly slower version of it that's just as unsafe.
On Fri, Apr 1, 2011 at 3:14 PM, Maarten De Meyer <maar...@off-limits.be>wrote: > No, both windows and linux. I suspected it was a valid construction. > Still, that leaves me out of ideas :P > ------------------------------ > From: Adam "amckern" McKern > Sent: vrijdag 1 april 2011 3:25 > > To: Discussion of Half-Life Programming > Subject: Re: [hlcoders] CUtlVector crash ( screenshake ) > > You might want to upgrade to memcpy_s if your windows server only (GCC > has a dislike to microsoft non ISO code). > > > -------- > Owner Nigredo Studios http://www.nigredostudios.com > > --- On *Fri, 1/4/11, Tony "omega" Sergi <omegal...@gmail.com>* wrote: > > > From: Tony "omega" Sergi <omegal...@gmail.com> > Subject: Re: [hlcoders] CUtlVector crash ( screenshake ) > To: "Discussion of Half-Life Programming" <hlcoders@list.valvesoftware.com > > > Cc: "Tony Paloma" <drunkenf...@hotmail.com> > Received: Friday, 1 April, 2011, 12:10 PM > > It's destructing the container the pointer to your object is stored in, not > the object itself. > PurgeAndDelete on the other hand will destroy the object itself as well. > > > > > On Fri, Apr 1, 2011 at 4:02 AM, Tony Paloma > <drunkenf...@hotmail.com<http://au.mc335.mail.yahoo.com/mc/compose?to=drunkenf...@hotmail.com> > > wrote: > > Your point about #3 does indeed look fishy. I'm not sure why they're > calling > the destructor on their own anyways. > > Try this: > // Retire this shake. > void *shake = m_ShakeList.Element( nShake ); > m_ShakeList.FastRemove( nShake ); > delete shake; > continue; > > -----Original Message----- > From: > hlcoders-boun...@list.valvesoftware.com<http://au.mc335.mail.yahoo.com/mc/compose?to=hlcoders-boun...@list.valvesoftware.com> > [mailto:hlcoders-boun...@list.valvesoftware.com<http://au.mc335.mail.yahoo.com/mc/compose?to=hlcoders-boun...@list.valvesoftware.com>] > On Behalf Of Maarten De > Meyer > Sent: Thursday, March 31, 2011 11:38 AM > To: Discussion of Half-Life Programming > Subject: [hlcoders] CUtlVector crash ( screenshake ) > > Hi List! > > So, we're finally out there in closed beta. One of the most annyoing issues > is a client side crash. The call stack doesn't say all that much, but > still: > it always happens in the Purge command in the destructor of > CUtlVector: > > template< typename T, class A > > inline CUtlVector<T, A>::~CUtlVector() > { > Purge(); > } > > more precisely, in the CUtlVector< screenshake_t * > . [ There's only one > of > those, in CViewEffects ]. > > Now, some questions: > > 1) any idea why this happens? [ had to ask :D ] > 2) if no, any idea on how to debug? > 3) Is the following normal? : > > // Retire this shake. > delete m_ShakeList.Element( nShake ); > m_ShakeList.FastRemove( nShake ); > continue; > > where: > > template< typename T, class A > > void CUtlVector<T, A>::FastRemove( int elem ) { > Assert( IsValidIndex(elem) ); > > Destruct( &Element(elem) ); > if (m_Size > 0) > { > memcpy( &Element(elem), &Element(m_Size-1), sizeof(T) ); > --m_Size; > } > } > > and > > template <class T> > inline void Destruct( T* pMemory ) > { > pMemory->~T(); > > #ifdef _DEBUG > memset( pMemory, 0xDD, sizeof(T) ); #endif } > > Concretely: how come it is allowed to first delete a pointer, and > afterwards > still call the destructor on it? Is that not dangerous? [ Probably a c++ > finesse I'm missing ] Shake works fine most of the time though ( I tried > with the console cheat command ), so it's not a reproducible crash yet - > but > happens very often in online games. > > Thanks in advance for any lights shed in the darkness! > > -- Maarten > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > > > > -- > -Tony > > > -----Inline Attachment Follows----- > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > >
_______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders