[commit] r1272 - trunk/GME/Mga
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Mon Apr 18 10:54:58 CDT 2011
Author: ksmyth
Date: Mon Apr 18 10:54:58 2011
New Revision: 1272
Log:
BSTRs may be NULL, dont pass them to CRT functions if they are
Modified:
trunk/GME/Mga/Mga.cpp
trunk/GME/Mga/MgaAttribute.cpp
trunk/GME/Mga/MgaAttribute.h
trunk/GME/Mga/MgaTrukk.h
Modified: trunk/GME/Mga/Mga.cpp
==============================================================================
--- trunk/GME/Mga/Mga.cpp Thu Apr 14 12:04:51 2011 (r1271)
+++ trunk/GME/Mga/Mga.cpp Mon Apr 18 10:54:58 2011 (r1272)
@@ -100,7 +100,6 @@
/////////////////////////////////////////////////////////////////////////////
-const CComBSTR NULLSTR;
const CoreObj NULLCOREOBJ;
const CComVariant NULLVARIANT;
Modified: trunk/GME/Mga/MgaAttribute.cpp
==============================================================================
--- trunk/GME/Mga/MgaAttribute.cpp Thu Apr 14 12:04:51 2011 (r1271)
+++ trunk/GME/Mga/MgaAttribute.cpp Mon Apr 18 10:54:58 2011 (r1272)
@@ -512,7 +512,9 @@
// throws
-CoreObj findregvalueobj(CoreObj &cur, LPOLESTR obname, long &opacity, bool create) { //returns NULL if not found
+CoreObj findregvalueobj(CoreObj &cur, LPOLESTR bstrObname, long &opacity, bool create) { //returns NULL if not found
+ wchar_t* obname = bstrObname;
+ if (obname == NULL) obname = L"";
ASSERT(*obname != '/');
LPOLESTR endstr = wcschr(obname,'/');
size_t len = endstr ? endstr - obname : wcslen(obname);
@@ -548,49 +550,6 @@
}
-
-#if(0)
-// throws
-CoreObj findregvalueobj(CoreObj &cur, LPOLESTR obname, long &opacity, bool create) { //returns NULL if not found
- ASSERT(*obname != '/');
- LPOLESTR endstr = wcschr(obname,'/');
- size_t len = endstr ? endstr - obname : wcslen(obname);
-
- CComBSTR namesegment(len, obname);
- VARIANT v;
- v.vt = VT_BSTR;
- v.bstrVal = namesegment;
- if(CoreObj node = cur[ATTRID_REGNOWNER+ATTRID_COLLECTION].Search(ATTRID_NAME, v)) {
- opacity |= (long)node[ATTRID_REGFLAGS];
- if(!endstr) {
- return node;
- }
- return findregvalueobj(node, endstr +1, opacity, create);
- }
-
- if(create) {
- CComPtr<ICoreProject> p;
- COMTHROW(cur->get_Project(&p));
- CoreObj nob;
- COMTHROW(p->CreateObject(DTID_REGNODE, &nob.ComPtr()));
- {
- LPOLESTR z = new OLECHAR[len+1];
- wcsncpy(z, obname, len);
- z[len] = '\0';
- nob[ATTRID_NAME] = z;
- delete z;
- }
- nob[ATTRID_REGFLAGS] = 0;
- nob[ATTRID_REGNOWNER] = cur;
- if(!endstr) return nob;
- return findregvalueobj(nob, endstr +1, opacity, create);
- }
- return NULLCOREOBJ;
-}
-
-#endif
-
-
class regnotifytask : public DeriveTreeTask {
bool Do(CoreObj self, std::vector<CoreObj> *peers = NULL) {
ObjForCore(self)->SelfMark(OBJEVENT_REGISTRY);
@@ -761,7 +720,7 @@
long dummy;
valueobj <<= findregvalueobj(fco->self, mypath, dummy, true);
load_status = ATTSTATUS_HERE;
- valueobj[ATTRID_REGNODEVALUE] = NULLSTR;
+ valueobj[ATTRID_REGNODEVALUE] = CComBSTR();
valueobj[ATTRID_XREF] = CoreObj(newVal);
long flags = valueobj[ATTRID_REGFLAGS];
if(!(flags & RFLAG_HASVALUE)) valueobj[ATTRID_REGFLAGS] = flags | RFLAG_HASVALUE;
@@ -839,7 +798,7 @@
fco->CheckRead();
CHECK_OUTPTRPAR(pVal);
- BSTR p = wcsrchr(mypath, L'/');
+ wchar_t* p = (mypath == NULL ? NULL : wcsrchr(mypath, L'/'));
if(p) {
CComBSTR xpath;
xpath.Attach(::SysAllocStringLen(mypath,p-mypath));
@@ -864,7 +823,7 @@
*/
long dummy;
valueobj <<= findregvalueobj(fco->self, mypath, dummy, true);
- valueobj[ATTRID_REGNODEVALUE] = NULLSTR;
+ valueobj[ATTRID_REGNODEVALUE] = CComBSTR();
long flags = valueobj[ATTRID_REGFLAGS];
valueobj[ATTRID_REGFLAGS] = flags & ~RFLAG_HASVALUE;
load_status = ATTSTATUS_INVALID;
Modified: trunk/GME/Mga/MgaAttribute.h
==============================================================================
--- trunk/GME/Mga/MgaAttribute.h Thu Apr 14 12:04:51 2011 (r1271)
+++ trunk/GME/Mga/MgaAttribute.h Mon Apr 18 10:54:58 2011 (r1272)
@@ -149,7 +149,7 @@
STDMETHOD(get_Name)( BSTR *pVal) {
COMTRY {
CHECK_OUTPAR(pVal);
- LPCOLESTR p = wcsrchr(mypath, '/');
+ LPCOLESTR p = (mypath == NULL ? NULL : wcsrchr(mypath, '/'));
if(p) p += 1; // skip '/'
else p = mypath;
CComBSTR rval(p);
Modified: trunk/GME/Mga/MgaTrukk.h
==============================================================================
--- trunk/GME/Mga/MgaTrukk.h Thu Apr 14 12:04:51 2011 (r1271)
+++ trunk/GME/Mga/MgaTrukk.h Mon Apr 18 10:54:58 2011 (r1272)
@@ -5,9 +5,7 @@
#include "CommonMgaTrukk.h"
#define DIM(x) (sizeof(x)/ sizeof((x)[0]))
-#define PUTINCLEAN(x) ((x) = NULL, &(x))
-extern const CComBSTR NULLSTR;
extern const CoreObj NULLCOREOBJ;
extern const CComVariant NULLVARIANT;
@@ -64,7 +62,8 @@
//by ZolMol
#define CHECK_MYINPTRSPARFOLDER(p) { if(p == NULL) COMTHROW( E_MGA_INPTR_NULL); \
COMTHROW( mgaproject->CheckFolderCollection(p)); }
-#define CHECK_INSTRPAR(p) { if(p == NULL) p = NULLSTR; }
+// KMS: was "if(p == NULL) p = NULLSTR", but starting with VS2003, that does nothing since NULLSTR.m_str==NULL
+#define CHECK_INSTRPAR(p) { }
#define CHECK_OUTSTRPAR(p) { if(p == NULL) COMTHROW(E_MGA_OUTPTR_NULL); if(*p != NULL) COMTHROW(E_MGA_OUTPTR_NONEMPTY); }
#define CHECK_OUTPTRPAR(p) { if(p == NULL) COMTHROW(E_MGA_OUTPTR_NULL); if(*p != NULL) COMTHROW(E_MGA_OUTPTR_NONEMPTY); }
#define CHECK_OUTPTRPARVALIDNULL(p) { if(p != NULL && *p != NULL) COMTHROW(E_MGA_OUTPTR_NONEMPTY); }
More information about the gme-commit
mailing list