Ignore:
Timestamp:
Nov 12, 2002, 6:07:48 PM (23 years ago)
Author:
sandervl
Message:

Wine resync

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ole32/itemmoniker.c

    r8620 r9400  
    388388    if (!This->itemName)
    389389        return E_OUTOFMEMORY;
    390     strcpyW(This->itemName,lpszItem);
     390    lstrcpyW(This->itemName,lpszItem);
    391391
    392392    if (!lpszDelim)
     
    395395    delim = lpszDelim ? lpszDelim : emptystr;
    396396
    397     sizeStr2=strlenW(delim);
     397    sizeStr2=lstrlenW(delim);
    398398    This->itemDelimiter=HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*(sizeStr2+1));
    399399    if (!This->itemDelimiter) {
     
    401401        return E_OUTOFMEMORY;
    402402    }
    403     strcpyW(This->itemDelimiter,delim);
     403    lstrcpyW(This->itemDelimiter,delim);
    404404    return S_OK;
    405405}
     
    612612    LPOLESTR dispName1,dispName2;
    613613    IBindCtx* bind;
    614     HRESULT res;
     614    HRESULT res = S_FALSE;
    615615
    616616    TRACE("(%p,%p)\n",iface,pmkOtherMoniker);
    617617
    618     if (pmkOtherMoniker==NULL)
    619         return S_FALSE;
    620 
    621     /* This method returns S_OK if both monikers are item monikers and their display names are */
    622     /* identical (using a case-insensitive comparison); otherwise, the method returns S_FALSE. */
    623 
    624     IMoniker_GetClassID(pmkOtherMoniker,&clsid);
    625 
    626     if (!IsEqualCLSID(&clsid,&CLSID_ItemMoniker))
    627         return S_FALSE;
    628 
    629     res=CreateBindCtx(0,&bind);
    630     if (FAILED(res))
    631         return res;
    632 
    633     IMoniker_GetDisplayName(iface,bind,NULL,&dispName1);
    634     IMoniker_GetDisplayName(pmkOtherMoniker,bind,NULL,&dispName2);
    635 
    636     if (lstrcmpW(dispName1,dispName2)!=0)
    637         return S_FALSE;
    638 
    639     return S_OK;
     618    if (!pmkOtherMoniker) return S_FALSE;
     619
     620
     621    /* check if both are ItemMoniker */
     622    if(FAILED (IMoniker_GetClassID(pmkOtherMoniker,&clsid))) return S_FALSE;
     623    if(!IsEqualCLSID(&clsid,&CLSID_ItemMoniker)) return S_FALSE;
     624
     625    /* check if both displaynames are the same */
     626    if(SUCCEEDED ((res = CreateBindCtx(0,&bind)))) {
     627        if(SUCCEEDED (IMoniker_GetDisplayName(iface,bind,NULL,&dispName1))) {
     628            if(SUCCEEDED (IMoniker_GetDisplayName(pmkOtherMoniker,bind,NULL,&dispName2))) {
     629                if(lstrcmpW(dispName1,dispName2)==0) res = S_OK;
     630                CoTaskMemFree(dispName2);
     631            }
     632            CoTaskMemFree(dispName1);
     633        }
     634    }
     635    return res;
    640636}
    641637
     
    843839        return E_OUTOFMEMORY;
    844840
    845     strcpyW(*ppszDisplayName,This->itemDelimiter);
    846     strcatW(*ppszDisplayName,This->itemName);
     841    lstrcpyW(*ppszDisplayName,This->itemDelimiter);
     842    lstrcatW(*ppszDisplayName,This->itemName);
    847843
    848844    return S_OK;
Note: See TracChangeset for help on using the changeset viewer.