diff --git a/src/xercesc/util/TransService.cpp b/src/xercesc/util/TransService.cpp
index c329b5693946200e0247ccfbb48de4d287539cd6..46ebe90bb5b9aadbfae61f4d770f7ece5042ba7d 100644
--- a/src/xercesc/util/TransService.cpp
+++ b/src/xercesc/util/TransService.cpp
@@ -200,7 +200,11 @@ XMLTransService::makeNewTranscoderFor(  const   XMLCh* const            encoding
 
     // If we found it, then call the factory method for it
     if (ourMapping)
-        return ourMapping->makeNew(blockSize);
+	{		
+       XMLTranscoder* temp = ourMapping->makeNew(blockSize);
+       resValue = temp ? XMLTransService::Ok : XMLTransService::InternalFailure;
+       return temp;
+     }
 
     //
     //  For now, we have a little list of encodings that we disallow
@@ -214,7 +218,10 @@ XMLTransService::makeNewTranscoderFor(  const   XMLCh* const            encoding
         {
             // If its one of our guys, then pretend we don't understand it
             if (!XMLString::compareString(upBuf, gDisallowList[index]))
+			{
+                resValue = XMLTransService::UnsupportedEncoding;               
                 return 0;
+			}
         }
     }