Changeset 13417 in vbox for trunk/src/VBox/Main/ConsoleImpl.cpp
- Timestamp:
- Oct 21, 2008 8:18:58 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/ConsoleImpl.cpp
r13379 r13417 1009 1009 using namespace guestProp; 1010 1010 1011 int rc = VINF_SUCCESS; 1011 1012 /* No locking, as this is purely a notification which does not make any 1012 1013 * changes to the object state. */ … … 1015 1016 AssertReturn(HOSTCALLBACKMAGIC == pCBData->u32Magic, VERR_INVALID_PARAMETER); 1016 1017 ComObjPtr <Console> pConsole = reinterpret_cast <Console *> (pvExtension); 1017 pConsole->mControl->PushGuestProperty(Bstr(pCBData->pcszName), 1018 Bstr(pCBData->pcszValue), 1019 pCBData->u64Timestamp, 1020 Bstr(pCBData->pcszFlags)); 1021 return VINF_SUCCESS; 1018 Bstr name(pCBData->pcszName); 1019 Bstr value(pCBData->pcszValue); 1020 Bstr flags(pCBData->pcszFlags); 1021 if ( name.isNull() 1022 || (value.isNull() && (pCBData->pcszValue != NULL)) 1023 || (flags.isNull() && (pCBData->pcszFlags != NULL)) 1024 ) 1025 rc = VERR_NO_MEMORY; 1026 else 1027 if (FAILED(pConsole->mControl->PushGuestProperty(name, value, 1028 pCBData->u64Timestamp, 1029 flags))) 1030 rc = VERR_UNRESOLVED_ERROR; /** @todo translate error code */ 1031 return rc; 1022 1032 } 1023 1033 #endif … … 3653 3663 * double-terminated zero-separated one. 3654 3664 */ 3655 Utf8Str Utf8PatternsIn = aPatterns; 3656 if ((aPatterns != NULL) && Utf8PatternsIn.isNull()) 3665 Utf8Str utf8In(aPatterns); 3666 Utf8Str utf8Out(utf8In.length() + 2); /* Double terminator */ 3667 if ( ((aPatterns != NULL) && (utf8In.isNull())) 3668 || utf8Out.isNull()) 3657 3669 return E_OUTOFMEMORY; 3658 size_t cchPatterns = Utf8PatternsIn.length(); 3659 Utf8Str Utf8Patterns(cchPatterns + 2); /* Double terminator */ 3660 if (Utf8Patterns.isNull()) 3661 return E_OUTOFMEMORY; 3662 char *pszPatterns = Utf8Patterns.mutableRaw(); 3663 unsigned iPatterns = 0; 3664 for (unsigned i = 0; i < cchPatterns; ++i) 3665 { 3666 char cIn = Utf8PatternsIn.raw()[i]; 3667 if ((cIn != ',') && (cIn != ' ')) 3668 pszPatterns[iPatterns] = cIn; 3669 else if (cIn != ' ') 3670 pszPatterns[iPatterns] = '\0'; 3671 if (cIn != ' ') 3672 ++iPatterns; 3673 } 3674 pszPatterns[iPatterns] = '\0'; 3670 const char *pcszIn = utf8In.raw(); 3671 char *pszzOut = utf8Out.mutableRaw(); 3672 size_t iIn = 0, iOut = 0; 3673 if (aPatterns != NULL) 3674 while (pcszIn[iIn] != '\0') 3675 { 3676 if (pcszIn[iIn] != ',') 3677 { 3678 pszzOut[iOut] = pcszIn[iIn]; 3679 ++iIn; 3680 } 3681 else 3682 { 3683 pszzOut[iOut] = '\0'; 3684 while ((',' == pcszIn[iIn]) || (' ' == pcszIn[iIn])) 3685 ++iIn; 3686 } 3687 ++iOut; 3688 } 3689 pszzOut[iOut] = '\0'; 3690 3675 3691 parm[0].type = VBOX_HGCM_SVC_PARM_PTR; 3676 parm[0].u.pointer.addr = psz Patterns;3677 parm[0].u.pointer.size = i Patterns+ 1;3692 parm[0].u.pointer.addr = pszzOut; 3693 parm[0].u.pointer.size = iOut + 1; 3678 3694 3679 3695 /*
Note:
See TracChangeset
for help on using the changeset viewer.