cbsatplugin/atmisccmdplugin/src/atmisccmdplugin.cpp
changeset 67 16e4b9007960
parent 47 9e2a905b887f
--- 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<KErrorReplyLength> 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)
             {