diff -r 001a94c71129 -r 16e4b9007960 cbsatplugin/atmisccmdplugin/src/atmisccmdplugin.cpp --- a/cbsatplugin/atmisccmdplugin/src/atmisccmdplugin.cpp Wed Sep 29 13:09:05 2010 +0300 +++ b/cbsatplugin/atmisccmdplugin/src/atmisccmdplugin.cpp Wed Oct 13 13:15:31 2010 +0300 @@ -433,12 +433,15 @@ } else if (ret == KErrNone) { - aBuffer.Create( iReplyBuffer, partLength ); - iReplyBuffer.Delete( 0, partLength ); - if ( iReplyBuffer.Length() == 0 ) - { - iReplyBuffer.Close(); - } + + if((ret = aBuffer.Create( iReplyBuffer, partLength )) == KErrNone) + { + iReplyBuffer.Delete( 0, partLength ); + if ( iReplyBuffer.Length() == 0 ) + { + iReplyBuffer.Close(); + } + } } } @@ -477,35 +480,42 @@ Trace(KDebugPrintD, "iQuietMode: ", iQuietMode); if ( iQuietMode ) { - iReplyBuffer.Create( KNullDesC8 ); + aError = iReplyBuffer.Create( KNullDesC8 ); } else { - iReplyBuffer.Create( aSrcBuffer ); + aError = iReplyBuffer.Create( aSrcBuffer ); } - Trace(KDebugPrintD, "aReplyType: ", aReplyType); - switch ( aReplyType ) + if(aError == KErrNone) { - case EReplyTypeOther: - break; -#ifdef PROTOCOL_TDSCDMA - case EReplyTypeEditor: - CreateEditModeBuffer( iReplyBuffer ); - break; -#endif - case EReplyTypeOk: - CreateOkOrErrorReply( iReplyBuffer, ETrue ); - break; - case EReplyTypeError: - CreateOkOrErrorReply( iReplyBuffer, EFalse ); - break; - default: - TRACE_FUNC_EXIT - return KErrGeneral; + Trace(KDebugPrintD, "aReplyType: ", aReplyType); + switch ( aReplyType ) + { + case EReplyTypeOther: + break; + #ifdef PROTOCOL_TDSCDMA + case EReplyTypeEditor: + aError = CreateEditModeBuffer( iReplyBuffer ); + break; + #endif + case EReplyTypeOk: + aError = CreateOkOrErrorReply( iReplyBuffer, ETrue ); + break; + case EReplyTypeError: + aError = CreateOkOrErrorReply( iReplyBuffer, EFalse ); + break; + default: + TRACE_FUNC_EXIT + return KErrGeneral; + } + + if(aError == KErrNone) + { + CreatePartOfReply( *iHcReply ); + } } - CreatePartOfReply( *iHcReply ); - HandleCommandCompleted( KErrNone, aReplyType ); + HandleCommandCompleted( aError, aError ? EReplyTypeUndefined : aReplyType ); if ( EReplyTypeEditor != aReplyType ) { iHcCmd = NULL; @@ -513,7 +523,7 @@ iCurrentHandler = NULL; } TRACE_FUNC_EXIT - return KErrNone; + return aError; } /** @@ -528,6 +538,8 @@ _LIT8( KErrorReplyNumeric, "4" ); _LIT8( KOkReplyNumeric, "0" ); TBuf8 replyBuffer; + TInt ret = KErrNone; + if ( iVerboseMode ) { replyBuffer.Append( iCarriageReturn ); @@ -556,10 +568,14 @@ replyBuffer.Append( iCarriageReturn ); } - aReplyBuffer.ReAlloc(aReplyBuffer.Length() + replyBuffer.Length()); - aReplyBuffer.Append( replyBuffer ); + ret = aReplyBuffer.ReAlloc(aReplyBuffer.Length() + replyBuffer.Length()); + if(ret == KErrNone) + { + aReplyBuffer.Append( replyBuffer ); + } + TRACE_FUNC_EXIT - return KErrNone; + return ret; } /** @@ -648,7 +664,12 @@ { // return error code to AT client RBuf8 response; - response.Create(KDefaultCmdBufLength); + if (KErrNone != response.Create(KDefaultCmdBufLength)) + { + CreateReplyAndComplete(EReplyTypeError); + return; + } + response.Append(KCRLF); switch(aError) {