|
Link
Libraries Errata
Problems With The Extension Libraries (#link
files)
Version
4.40D errata (may apply to earlier versions)
- Bugs:
Multiple problems have been recently fixed with
the COMOBJ library. These are:
- After
calling a COM method, the variables which
were passed as same-type arguments have their
values swapped. For example, if a COMOBJ method
received two parameters which are both integers,
then their values would be swapped after the
call to the COMOBJ method.
- When
converting a COMOBJ object to its default
value (usually a number or a string), the
special DISPID_VALUE was not being used, so
not all COM objects returned their version
of the default.
- If
an error occurred in the COMObj_get callback,
an uninitialized jseVariables was returned,
resulting in a crash.
Fix:
These and all COMOBJ problems up to October
25, 2001, can be downloaded from ftp://ftp.nombas.com/pub/isdkeval/se440/comobj102501.zip.
- Bug:
Passing multiple parameters of the same type
to a COMOBJ method causes problems. When two
or more parameters of the same type are passed
to a COM component method, all of those parameters
get assigned the value of the first parameter.
For example, if we had a sample COM component
with a method 'foo' which simply prints out
its parameters, the following script:
var obj = COMCreateObject("sample");
obj.foo("abc","xyz");
would
print out "abc" and "abc",
not "abc" and "xyz" like
one would expect. The fix for this bug can
be downloaded from ftp://ftp.nombas.com/pub/isdkeval/se440/comobjparam.zip.
Version
4.40C errata (may apply to earlier versions)
- Problem:
The COMOBJ C++ code contains global variables
used for debugging. If run within multiple threads
these globals will conflict. These globals are
only used when debugging (i.e. !defined(NDEBUG)).
With the 4.40d release a new pre-define COMOBJ_FULL_DEBUGGING
has been added to allow these global varables
to be disabled for multi-thread debugging.
Version
4.30E errata (may apply to earlier versions)
- Bugs:
Multiple problems have been recently fixed with
the COMOBJ library. These are:
- After
calling a COM method, the variables which
were passed as same-type arguments have their
values swapped. For example, if a COMOBJ method
received two parameters which are both integers,
then their values would be swapped after the
call to the COMOBJ method.
- When
converting a COMOBJ object to its default
value (usually a number or a string), the
special DISPID_VALUE was not being used, so
not all COM objects returned their version
of the default.
- If
an error occurred in the COMObj_get callback,
an uninitialized jseVariables was returned,
resulting in a crash.
Fix: These and all COMOBJ problems up to
October 25, 2001, can be downloaded from ftp://ftp.nombas.com/pub/isdkeval/se430/comobj102501.zip.
- Bug:
Passing multiple parameters of the same type
to a COMOBJ method causes problems. When two
or more parameters of the same type are passed
to a COM component method, all of those parameters
get assigned the value of the first parameter.
For example, if we had a sample COM component
with a method 'foo' which simply prints out
its parameters, the following script:
var obj = COMCreateObject("sample");
obj.foo("abc","xyz");
would
print out "abc" and "abc",
not "abc" and "xyz" like
one would expect. The fix for this bug can
be downloaded from ftp://ftp.nombas.com/pub/isdkeval/se430/comobjparam.zip.
Version
4.30D errata (may apply to earlier versions)
- Problem:
The COMOBJ C++ code contains global variables
used for debugging. If run within multiple threads
these globals will conflict. These globals are
only used when debugging (i.e. !defined(NDEBUG)).
With the 4.30e release a new pre-define COMOBJ_FULL_DEBUGGING
has been added to allow these global varables
to be disabled for multi-thread debugging.
-
Problem:
Under certain circumstances a call to comobj
to put a value into a COM variable would either
fail with an error saying that the object
was no longer connected to the server or would
crash ScriptEase outright. This was due to
the fact that if the variable in question
was an object and not a simple data type,
the COMObj_put() function in compbj.cpp was
attempting to use the dispatch pointer for
the object that was to be assigned to in a
call to Invoke() after it had already been
released.
Fix:
In comobj.cpp, function COMObj_put(), at about
line 776, the call to VariantClear(&vRet)
needs to be moved down a few lines so that
it follows the call to Invoke. So this code:
VariantClear(&vRet);
memset( &excepInfo, 0, sizeof(EXCEPINFO) );
hr = Invoke(lDisp, DISPATCH_PROPERTYPUT, NULL, &excepInfo, NULL,
wName, TEXT("v"), v);
VariantClear(&v);
becomes
this code:
memset( &excepInfo, 0, sizeof(EXCEPINFO) );
hr = Invoke(lDisp, DISPATCH_PROPERTYPUT, NULL, &excepInfo, NULL,
wName, TEXT("v"), v);
VariantClear(&v);
VariantClear(&vRet);
This
fix, along with the bug-fix below, can be
downloaded from ftp://ftp.nombas.com/pub/isdkeval/se430/newcomobj.zip
- Problem:
COMOBJ lacked the type of internal error checking,
debug code, and general robustness of the other
objects release by Nombas. The result was that
COMOBJ could leak memory, run slowly, and fail
on unexpected interactions with COM objects.
- Problem:
Unicode builds of COMOBJ crash when converting
strings.
Fix:
In COMOBJ.CPP, at about line 58, replace these
lines:
#define jsecharptr_to_BSTR(src) SysAllocString(src)
#define free_BSTR(src) SysFreeString(src)
with
these
#define jsecharptr_to_BSTR(src) SysAllocString(src)
#define free_BSTR(src) SysFreeString(src)
A
newly modified comobj, containing this and all
previous updates, may be downloaded from ftp://ftp.nombas.com/pub/isdkeval/se430/comobj.zip
(Note: an improved comobj is now available,
see NewComObj)
- Problem:
The comobj library did not support the alteration
of arguments passed to a COM object method under
certain circumstances. Under these circumstances,
the ScriptEase variables representing the arguments
to the method were not updated.
Fix:
Because our COM object code had been written
with the idea that variants passed in an argument
array in the invocation of a COM object method
would be returned as the same type they were
passed, our generic dispatch code did not allow
for the re-assignment of the values of argument
variables if the argument variant was passed
back by value instead of by reference. To fix
this, code was added to the oleGenericDispatcher()
function in srclib\comobj\comobj.cpp that took
this possibility into account. Specifically,
cases were added to the existing switch statement
that occurs after the function returns for the
by-value versions of each variant type. The
new COMOBJ.CPP file, fixing this problem and
the one listed below may be downloaded from
ftp://ftp.nombas.com/pub/isdkeval/se430/comobj.zip
(Note: an improved comobj is now available,
see NewComObj)
- COMOBJ
does not release all objects. 1) Many instances
of VariantInit() and VariantClear() have been
added to make sure all references are released
properly. 2) the _delete function has been modified
to handle the case of a com object deleted with
no parameteers. The new COMOBJ.CPP file, fixing
both of these problems and the one listed above,
may be downloaded from ftp://ftp.nombas.com/pub/isdkeval/se430/comobj.zip
(Note: an improved comobj is now available,
see NewComObj)
Version
4.30C errata (may apply to earlier versions)
-
The SEDBC database relied on ExtendedFetch
for cursor support, although not all ODBC
drivers support this. The 4.30D release allows
more options in the Database.prototype.cursor()
method for specifiying modes (as described
in the new online documentation for SEDBC).
Contact Nombas if you need this code before
the release of 4.30d.
Version
4.30B errata (may apply to earlier versions)
Version
4.20C errata (may apply to earlier versions)
Version
4.03B errata (may apply to earlier versions)
|