Hi, please, can anybody help?

This function occasional causes GPF   
and occurs sporadic only on some xp/vista machines
>
> >> Application Internal Error ...
> >> Terminated at: ....
> >> Info: Harbour MiniGUI 1.7 Extended Edition (Build 74) - 2009.09.30
> >> Unrecoverable error 9023: hb_xgrab requested to allocate zero bytes
> >> Called from SOCKETRECEIVE(0)


regards, Mitja


HB_FUNC( SOCKETRECEIVE )
{
   SOCKET   m_hSocket = INVALID_SOCKET;

   if( bInit && hb_parclen(1) == sizeof(m_hSocket) && ISCHAR(2) && ISBYREF(2) )
   {
      /* Copy m_hSocket from caller method */
      strncpy( ( char * ) &m_hSocket, hb_parc(1), sizeof(m_hSocket) );
      if( m_hSocket != INVALID_SOCKET )
      {
         int   nLen = hb_parclen( 2 );
         if ( nLen > 0 )
         {
            char  *pRead = ( char * ) hb_xgrab( nLen + 1 );
            if( ISNUM(3) )
            {
               int   recvtimeout = hb_parni( 3 );
               if( recvtimeout != -1 )
               { 
                  setsockopt( m_hSocket, SOL_SOCKET, SO_RCVTIMEO, ( char * ) 
&recvtimeout, sizeof(recvtimeout) );
               }
            }

            nLen = recv( m_hSocket, pRead, nLen, 0 );
            hb_storclen( pRead, nLen, 2 );
            hb_xfree( pRead );
            hb_retni( nLen );
         }
         else
         {
            hb_retni( 0 );         
         }
      }
      else
      {
         hb_retni( 0 );
      }
   }
   else
   {
      hb_retni( 0 );
   }
}


      
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to