Subject: | Bug in DBD-Firebird-1.16 (fix suggestion) |
Date: | Fri, 07 Feb 2014 23:23:40 +0400 |
To: | bug-DBD-Firebird [...] rt.cpan.org |
From: | Vadim Belov <vb [...] enkx.com> |
Hello,
Recently I have encountered a problem with fetchrow_array in
FirebirdEmbedded. I use Perl 5.16.3 built from sources under Windows.
Perl stops with the message "Free to wrong pool 3469a8 not d6ff7e47 at
test.pl line 15." when I run the script below. Finally, the problem has
been located and fixed. In the file dbdimp.c
Line 2926: XSQLDA *out;
should be replaced with
Line 2926: XSQLDA *out=NULL;
Just wanted to let you know about this. I think it is good for
portability to fix this issue because not all compilers initialize
variables to zero by default.
Sincerely,
Vadim Belov
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect('dbi:FirebirdEmbedded:db=c:\\f.db')
or die "Couldn't connect to database: " . DBI->errstr;
my $sth = $dbh->prepare("SELECT rdb\$relation_name FROM rdb\$relations
where rdb\$view_blr is null and (rdb\$system_flag is null or
rdb\$system_flag = 0)")
or die "Couldn't prepare statement: " . $dbh->errstr;
$sth->execute() # Execute the query
or die "Couldn't execute statement: " . $sth->errstr;
# Read the matching records and print them out
while (my @data = $sth->fetchrow_array()) {
my $name = $data[0];
print "\t$name\n";
}