*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include "plugin.h"
using namespace std;
-class AxVLCVariant
+class AxVLCVariant
{
public:
AxVLCVariant(VARIANTARG &v)
{
- //VariantInit(&_v);
- //VariantCopy(&_v, &v);
- _v = v;
+ VariantInit(&_v);
+ VariantCopy(&_v, &v);
};
AxVLCVariant(VARIANTARG *v)
VARIANT arg;
V_VT(&arg) = VT_BSTR;
V_BSTR(&arg) = bstr;
+ VariantInit(&_v);
VariantCopy(&_v, &arg);
};
VARIANTARG _v;
};
-class AxVLCWSTR
+class AxVLCWSTR
{
public:
inline bool operator==(const AxVLCWSTR &s) const
{
- return compareNoCase(s.wstr()) == 0;
+ return size() == s.size() ?
+ (compareNoCase(s.wstr()) == 0) : false;
};
inline bool operator==(LPCWSTR s) const
{
if( NULL == ppv )
return E_POINTER;
- if( (IID_IUnknown == riid)
- && (IID_IPropertyBag == riid) )
+ if( (IID_IUnknown == riid)
+ || (IID_IPropertyBag == riid) )
{
AddRef();
*ppv = reinterpret_cast<LPVOID>(this);
if( notfound != iter )
{
VARTYPE vtype = V_VT(pVar);
- VariantCopy(pVar, const_cast<VARIANTARG*>((*iter).second.variantArg()));
- if( (V_VT(pVar) != vtype) && FAILED(VariantChangeType(pVar, pVar, 0, vtype)) )
+ VARIANTARG v;
+ VariantInit(&v);
+ VariantCopy(&v, const_cast<VARIANTARG*>((*iter).second.variantArg()));
+ if( (V_VT(&v) != vtype) && FAILED(VariantChangeType(&v, &v, 0, vtype)) )
{
- VariantClear(pVar);
+ VariantClear(&v);
return E_FAIL;
}
+ *pVar = v;
return S_OK;
}
else
return E_INVALIDARG;
};
-
+
STDMETHODIMP Write(LPCOLESTR pszPropName, VARIANT *pVar)
{
if( (NULL == pszPropName) || (NULL == pVar) )
(*p.first).second = val.second;
return S_OK;
};
-
+
// custom methods
HRESULT Load(LPSTREAM pStm)
{
if( (val->first == L"(Count)") && (VT_I4 == V_VT(val->second.variantArg())) )
{
- size_t count = V_I4(val->second.variantArg());
+ size_t count = V_I4(val->second.variantArg());
delete val;
while( count-- )
{
if( FAILED(result) )
return result;
if( len > 0 )
- {
+ {
result = pStm->Write(V_BSTR(propValue), len*sizeof(OLECHAR), NULL);
if( FAILED(result) )
return result;
return result;
};
- static HRESULT ReadProperty(LPSTREAM pStm, AxVLCPropertyPair **prop)
+ HRESULT ReadProperty(LPSTREAM pStm, AxVLCPropertyPair **prop)
{
HRESULT result;
STDMETHODIMP VLCPersistStreamInit::GetSizeMax(ULARGE_INTEGER *pcbSize)
{
pcbSize->HighPart = 0UL;
- pcbSize->LowPart = 4096UL; // just a guess
+ pcbSize->LowPart = 16384UL; // just a guess
return S_OK;
};