JACOB Changelog

What's new in JACOB 1.19

Aug 27, 2018
  • What's New:
  • Upgraded from Java 6 to Java 8 compilation
  • Upgraded from junit 3.8.1 to 4.12
  • Migrated from CVS to GIT using sourceforge migration instructions
  • Bugs:
  • 132 32 bit ponters not convertd to 64 bit
  • 130 Name value incorrect in Mainfest.MF affecting tamper check

New in JACOB 1.18 M1 (Oct 31, 2013)

  • Built with Java 1.6 and Visual Studio 2010 Tracked Changes

New in JACOB 1.17 (Oct 31, 2013)

  • No new features
  • Tracked Changes
  • Bugs:
  • 3505940 (M2)JacobVersion.properties accidently omitted from JAR. Must build from command line to get it included.
  • 3436102 (M1)Fix memory pointer that was 32 bit. Causes defects in 64 bit systems above 2GB
  • 115 (new numbers) (M3)Release problem if you've got two threads with the same name
  • 111 (new numbers) (M3)m_pDispatch is not 0 if not attached
  • 117 (new numbers) (M4) NullPointerException injacob-1.17-M2
  • Patches:
  • 41 (new numbers) (M3)Fix for SafeArray(String) constructor

New in JACOB 1.17-M4 (Jul 26, 2013)

  • Bugs:
  • JacobVersion.properties accidentally omitted from JAR. Must build from command line to get it included.
  • Fix memory pointer that was 32 bit. Causes defects in 64 bit systems above 2GB 115
  • Release problem if you've got two threads with the same name
  • m_pDispatch is not 0 if not attached
  • NullPointerException injacob-1.17-M2
  • Patches:
  • Fix for SafeArray(String) constructor

New in JACOB 1.17-M3 (Jul 24, 2013)

  • Tracked Changes:
  • JacobVersion.properties accidentally omitted from JAR. Must build from command line to get it included.
  • Fix memory pointer that was 32 bit. Causes defects in 64 bit systems above Release problem if you've got two threads with the same name
  • m_pDispatch is not 0 if not attached
  • Patches:
  • Fix for SafeArray(String) constructor

New in JACOB 1.17-M2 (Jul 24, 2013)

  • Tracked Changes:
  • JacobVersion.properties accidentally omitted from JAR. Must build from command line to get it included.
  • Fix memory pointer that was 32 bit. Causes defects in 64 bit systems above 2GB

New in JACOB 1.16.1 (Jul 4, 2013)

  • Identical to 1.16 except includes missing JacobVersion.properties

New in JACOB 1.16-M2 (Dec 12, 2011)

  • Remove Main-Class from MANIFEST because there is no main class entry point for this jar file
  • Add HRESULT to error message when unknown COM error raised in Dispatch
  • Added debug info to advise failure messages.
  • Added support for null dispatch object in putVariantDispatch.
  • Fixed memory leak in Variant.cpp zeroVariant method possibly related to previous fix proposed in SF 1689061 but never implemented. I guess we should fix it since people keep pointing it out
  • Variant.getString() now returns null for NULL or EMPTY Variants instead of throwing exception.
  • Fix for: When a DispatchEvent is created with a COM object, the COM object is never released totally, and the destructor function is never called.

New in JACOB 1.16-M1 (Oct 3, 2011)

  • Bugs:
  • (M1)Fix for: When a DispatchEvent is created with a COM object, the COM object is never released totally, and the destructor function is never called.
  • Patches:
  • (M1)Fix possible exception. Added initializing Variant used to retrieve the next value from IEnum because some implementations call VariantClear on it before setting a new value
  • (M1)Isolate compilation of SafeArrayTest.java because it is UTF-16 and not UTF-8
  • (M1)Changed windows version _WIN32_WINNT to 0x0500 to fix build with VS2010. (now 2000 or later)
  • (M1)Fixed the leak in Java_com_jacob_com_Variant_putVariantNoParam
  • (M1)Added Dispatch.Method to the invoke flags to call _NewEnum. There are some non-conforming legacy implementations that expose _NewEnum as a method.

New in JACOB 1.15 (Oct 3, 2011)

  • MS Libraries are now statically linked using /MT instead of /MD to reduce issues library compatibility issues, especially on older platforms. The VC++ redistributable library no longer needs to be installed as a stand alone product.
  • Bugs:
  • (M4)Bit masking in Variant.getXXXRef() uses wrong mask allowing more than one type to be seen as the requested type. Code that passed in the correct type always worked but invalid types were not always detected.
  • (M4)Error handling code crashes because of uninitialized data in Dispatch.cpp Check for NULL fails. pfnDeferredFillIn pointer is not initialized, but it's not NULL.
  • (M3)SafeArray.fromLongArray fails when using VariantLongInt
  • (M3) SafeArray#setString(*) incorrectly handles unicode strings
  • (M2)System.getProperties call caused security exception in applet. com.jacob.includeAllClassesInROT now acts as master switch for class/ROT control. This change also has the side benefit that the PutInROT property is not checked on every object creation for users who run in the standard all classes in ROT mode.
  • Patches:
  • (M1)Support conversion of primitive arrays to Variant arrays.
  • (M1)VariantUtils.populateVariant can cause VM crash with unrecognized type.
  • Feature Requests:
  • Add JNLP Applet example. Read the README to understand what jar file signing and file placement is required
  • (M4)Convert API to use var args and remove the many overloaded Dispatch methods that each added one more parameter.
  • (M4)a hasExited() method that allows polling until a COM server is terminated and implemented this method in JACOB

New in JACOB 1.14.3 (Oct 3, 2011)

  • Fixed windows memory corruption unhooking call back proxy
  • Possible deadlock when multiple threads starting and stopping that rely on implicit ComThread.InitMTA

New in JACOB 1.14.1 (Oct 3, 2011)

  • Type: loading 64 bit jacob.dll. Computed dll name includes space that is not in name of actual dll

New in JACOB 1.14 (Oct 3, 2011)

  • Binaries are now compiled with Java 5. JDK 1.4 support dropped.
  • Jacob now loads dlls based on platform (32 bit /64 bit) and version number.
  • Bugs:
  • (M7) version.properties renamed to META-INF/JacobVersion.properties to remove collision with WebSphere version.properties.
  • (M6) toJavaObject() converting to SafeArray did shallow copy that left two objects pointing at the same windows memory.
  • (M5) DECIMAL rounding behavior externalized and old Variant decimal API restored.
  • (M5) DECIMAL rounding behavior externalized and old Variant decimal API restored.
  • (M4) Decimal type now throws IllegalArgumentException when more than 12 bytes worth the digits exist in BigDecimal. Rounding support added to reduce precision of BigDecimals when converting into VT_DECIMAL
  • (M2) Double and Decimal conversion to Int fails for negative values

New in JACOB 1.13 (Oct 3, 2011)

  • Binaries compiled with with Visual Studio 2005 in place of VC98.
  • Changed milestone release naming convention from "pre..." to "M..."
  • The unittest directory now a JUnit 3.8.1 test repository
  • Bugs:
  • (M5) ERROR_MORE_DATA causes failures. Fix submitted for defect found while porting Jameleon to use current release of Jacob.
  • (M4) Fixed leak SafeArray setString(int[],value) and other setString() methods
  • Patches:
  • (M5) Support Unicode strings in COM failure messages
  • (M5) Replaced use of deprecated API and removed unused variables.
  • (M2) Added option to exclude classes from ROT to try and manage memory in heavy event callback programs. Feature is 100% backwards compatible by default.
  • (M1) Compiled with Visual Studio 2005. Jacob now requires 2005 or later libraries. See the UsingJacob.html file for impact this has on NT, 2000 and Server 2003 users.
  • Feature Requests:
  • (M4) Added VT_DECIMAL support for BigDecimals whose scale less than 28
  • (M3) unittest directory test programs converted to JUnit 3.8.1. New ANT target created to run all unit tests.
  • Known Issues:
  • Jacob 1.13 is built using VC++ 2005. That creates a dependency on the Visual C++ 2005 libraries and msvcr80.dll. This library is normally installed on XP systems but may have to be manually installed on older systems. The pagackage, often referred to as vcredist.exe can be obtained from the MS downloads site. If you are getting loader errors on this release or later when loading the dll then you may be missing this library.

New in JACOB 1.12 (Oct 3, 2011)

  • Now compiles with with Visual versions later than VC 98
  • Bugs:
  • (pre-release 1) ActiveXComponent: getPropertyAsString should call getString() instead of toString()
  • (pre-release 1) IEnumVariant leak fixed in patch 1674179
  • (pre-release 1) IEnumVariant leak fixed in patch 1674179
  • (pre-release 1) IEnumVariant leak fixed in patch 1674179
  • (pre-release 5) Unrecognized event callback id leaves thread attached to VM when ComFailException is thrown.
  • (pre-release 5) toJavaObject() fails for Dispatch because getDispatchRef() called instead of getDispatch().
  • Patches:
  • (pre-release 1) ROT hashmap key generation when autogc=no (default) can lead to key collisions in hashmap. This causes objects to be garbage finalized when they shouldn't be resulting in vm failures with large (large) numbers of objects.
  • (pre-release 1) Fixed Enum leaks with EnumVariants in Variant.cpp and EnumVariant.cpp
  • (pre-release 3) Corrected calls to AttachCurrentThread in EventProxy
  • (pre-release 4) C code changes to fix VC2003 compiler warnings.
  • (pre-release 4) Incorrect memcpy lengths for Currency Variants
  • (pre-release 6) Beta support for VT_VARIANT (VariantVariant). Includes support for putVariant, getVariant, toJavaObject, Variant(Object,flag). Enclosed variants are retreived as Java objects.
  • Feature Requests:
  • (pre-release 1) Dispatch static methods should throw runtime exceptions when null is passed in for the Dispatch object and when the Dispatch object is in an invalid state.
  • (pre-release 6) Support java semantics in event callbacks. Create ActiveXInvocationProxy and ActiveXDispatchEvents that provide the supplemental API. See IETestActiveXProxy.java for an example.
  • Known Issues:
  • Identified 1.11.1 Microsoft 2003 Server crashes. Server crashes on MS 2003 Server have been reported over time. Some users have had say that Jacob must be built on MS2003 Server to run reliably. The Jacob distribution on Sourceforge is built on Windows XP SP2
  • Identified 1.11.1 Process affinity may have to be set on dual core machines to avoid com exceptions.
  • no ticket Identified 1.11.1 Versions of JDK 1.5 prior to 1.5_10 are known to leak JNI handles. See the Sun bug tracking system http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6399321 for more details.

New in JACOB 1.11.1 (Oct 3, 2011)

  • Bug fix release
  • Bugs:
  • Variant toString() causes stack overflow for byRef() Variants (This show stopper defect forced the 1.11.1 release)
  • Variant toJavaObject() doesn't work for byRef Variables and returned the wrong value for unrecognized Variant types.
  • Variant getJavaDateRef() fails.
  • Patches:
  • Concurrent modification of ROT causes VM crashes. Access to the ROT has been synchronized. No performance impact analysis has been done

New in JACOB 1.11 (Oct 3, 2011)

  • Build:
  • Build process now notifies developer if version property missing
  • Build process now compiles 32 bit and/or 64 bit DLLs as appropriate for the build environment.
  • API Changes:
  • Variant.noParam() changed to Variant.putNoParam()
  • Variant.toString() now follows normal java semantics. This conflicted with the jacob toXXX() standard.
  • Many Variant.toXXX() did type conversion in addition to a get. The methods have deprecated because folks didn't realize they were doing type conversion. Most calls to toXXX() methods should actually be getXXX() calls. This also allowed toString() to follow Java conventions
  • Variant native methods are wrapped with java methods that do parameter and state checking to better armor the Variant
  • Bugs:
  • Build process died with confusing error if version not set in properties file(pre1)
  • Fix array index out of bounds problem due to coding error (pre1)
  • ~Event method in EventProxy may unhook java thread from VM. Can get JNI error because unhooking listner detatched Java VM thread (pre1)
  • toString() non compliant with java standards. The toString() method converted the underlying data to a string and it shouldn't. This caused a rethinking of all toXXX() methods other than toDispatch(). Most of the toXXX() methods have now been deprecated and should be replaced with getXXX() methods. (pre1)
  • Variant does not warn user if methods called after released. All putXXX() and getXXX() methods now check to see if they've been released prior to calling the JNI code. toXXX() methods are deprecated but protected in the same way.(pre1)
  • Patches:
  • Support command line parameter dll location specification. Applets and other tools can now specificy the dll location that is fed to a System.load() rather than System.loadLibrary for the situation where the app can't write the dll to a library path directory.(pre1)
  • Feature Requests:
  • Modify the build process to support 64 bit dll construction(pre2)
  • Moved all LoadLibrary requests into LibraryLoader. Classes not subclassed off of JacobObject make calls to a static method on LibraryLoader to make sure DLL is loaded(pre1)