adjust patch for 3m

svn: r9713
This commit is contained in:
Matthew Flatt 2008-05-07 01:33:55 +00:00
parent 3b569a0a8c
commit f285b630fa

View File

@ -399,9 +399,10 @@ VARTYPE getSchemeVectorType(Scheme_Object *vec) {
type = schemeValueToCOMType(SCHEME_VEC_ELS(vec)[0]);
if (VT_VARIANT == type) return type;
for (i = 1; i < size; ++i)
for (i = 1; i < size; ++i) {
if (type != schemeValueToCOMType(SCHEME_VEC_ELS(vec)[i]))
return VT_VARIANT;
}
return type;
}
@ -410,6 +411,7 @@ SAFEARRAY *schemeVectorToSafeArray(Scheme_Object *vec, VARTYPE *vt) {
SAFEARRAYBOUND *rayBounds;
int numDims;
int i;
VARTYPE _vt;
if (SCHEME_VECTORP(vec) == FALSE)
scheme_signal_error("Can't convert non-vector to SAFEARRAY");
@ -419,9 +421,10 @@ SAFEARRAY *schemeVectorToSafeArray(Scheme_Object *vec, VARTYPE *vt) {
if (numDims > MAXARRAYDIMS)
scheme_signal_error("Too many array dimensions");
rayBounds = (SAFEARRAYBOUND *)malloc(numDims * sizeof(SAFEARRAYBOUND));
for (i = 0; i < numDims; i++) rayBounds[i].lLbound = 0L;
for (i = 0; i < numDims; i++) { rayBounds[i].lLbound = 0L; }
setArrayEltCounts(vec,rayBounds,numDims);
*vt = getSchemeVectorType(vec);
_vt = getSchemeVectorType(vec);
*vt = _vt;
theArray = SafeArrayCreate(*vt,numDims,rayBounds);
setArrayElts(vec,*vt,theArray,numDims);
return theArray;