Correction to suggested fix:
I think the code at line 374 should look like:
if ( ber_scanf( ber, /*{*/ "}" ) == LBER_ERROR ) {
ld->ld_errno = LDAP_DECODING_ERROR;
ber_free( ber, 0 );
if( resoid != NULL ) LDAP_FREE( resoid );
if (resdata != NULL) ber_bvfree( resdata );
return ld->ld_errno;
}