File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -483,6 +483,16 @@ typedef struct eBaton
483
483
}
484
484
}
485
485
486
+ // If Blob data was fetched as Buffer, deallocate each buffer
487
+ if ( (defines[i].fetchType == dpi::DpiRaw) &&
488
+ mInfo [i].dbType == dpi::DpiBlob )
489
+ {
490
+ for ( unsigned int j = 0 ; j < maxRows ; j ++ )
491
+ {
492
+ free ( ((char **)(defines[i].buf ))[j] );
493
+ }
494
+ }
495
+
486
496
/*
487
497
* Buf and indicator will be allocated in all cases.
488
498
* len will NOT be allocated for CLOB-as-STRING/BLOB-as-BUFFER
Original file line number Diff line number Diff line change @@ -711,13 +711,15 @@ void ResultSet::clearFetchBuffer( unsigned int numRows )
711
711
{
712
712
if ( defineBuffers_[i].dttmarr )
713
713
{
714
+ /* Date/Timestamp columns */
714
715
defineBuffers_[i].dttmarr ->release ();
715
716
defineBuffers_[i].extbuf = NULL ;
716
717
}
717
718
else if ( ( defineBuffers_[i].fetchType == DpiClob ) ||
718
719
( defineBuffers_[i].fetchType == DpiBlob ) ||
719
720
( defineBuffers_[i].fetchType == DpiBfile ) )
720
721
{
722
+ /* Lob columns */
721
723
for (unsigned int j = 0 ; j < numRows; j++)
722
724
{
723
725
if (((Descriptor **)(defineBuffers_[i].buf ))[j])
@@ -727,6 +729,21 @@ void ResultSet::clearFetchBuffer( unsigned int numRows )
727
729
}
728
730
}
729
731
}
732
+ else if ( ( ( defineBuffers_[i].fetchType == dpi::DpiVarChar ) &&
733
+ ( mInfo_ [i].dbType == dpi::DpiClob ) ) ||
734
+ ( ( defineBuffers_[i].fetchType == dpi::DpiRaw ) &&
735
+ ( mInfo_ [i].dbType == dpi::DpiBlob ) ) )
736
+ {
737
+ /* CLOB-as-STRING or BLOB-as-BUFFER case */
738
+ for ( unsigned int j = 0 ; j < numRows ; j ++ )
739
+ {
740
+ if ( ( (char **)defineBuffers_[i].buf )[j] )
741
+ {
742
+ free ( ( (char **)defineBuffers_[i].buf )[j] );
743
+ ( ( char **)defineBuffers_[i].buf )[j] = NULL ;
744
+ }
745
+ }
746
+ }
730
747
731
748
free (defineBuffers_[i].buf );
732
749
free (defineBuffers_[i].len );
You can’t perform that action at this time.
0 commit comments