ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/BDB/BDB.xs
(Generate patch)

Comparing BDB/BDB.xs (file contents):
Revision 1.47 by root, Fri Jul 18 22:39:10 2008 UTC vs.
Revision 1.49 by root, Thu Sep 25 12:28:49 2008 UTC

1#include <sys/user.h>
2#include <sys/ptrace.h>
3
4#define X_STACKSIZE 1024 * 128 + sizeof (long) * 64 * 1024 / 4
5
1#include "xthread.h" 6#include "xthread.h"
2 7
3#include <errno.h> 8#include <errno.h>
4 9
5#include "EXTERN.h" 10#include "EXTERN.h"
130dbt_to_sv (SV *sv, DBT *dbt) 135dbt_to_sv (SV *sv, DBT *dbt)
131{ 136{
132 if (sv) 137 if (sv)
133 { 138 {
134 SvREADONLY_off (sv); 139 SvREADONLY_off (sv);
135 sv_setpvn_mg (sv, dbt->data, dbt->size); 140 sv_setsv_mg (sv, dbt->data ? newSVpvn (dbt->data, dbt->size) : &PL_sv_undef);
136 SvREFCNT_dec (sv); 141 SvREFCNT_dec (sv);
137 } 142 }
138 143
144 //assert (dbt->flags & DBT_MALLOC || !dbt->data);
139 free (dbt->data); 145 free (dbt->data);
140} 146}
141 147
142enum { 148enum {
143 REQ_QUIT, 149 REQ_QUIT,
524 on_next_submit = 0; 530 on_next_submit = 0;
525 531
526 PUSHMARK (SP); 532 PUSHMARK (SP);
527 PUTBACK; 533 PUTBACK;
528 call_sv (cb, G_DISCARD | G_EVAL); 534 call_sv (cb, G_DISCARD | G_EVAL);
535 SPAGAIN;
529 } 536 }
530 537
531 // synthesize callback if none given 538 // synthesize callback if none given
532 if (!req->callback) 539 if (!req->callback)
533 { 540 {
541 548
542 if (count != 2) 549 if (count != 2)
543 croak ("prepare callback must return exactly two values\n"); 550 croak ("prepare callback must return exactly two values\n");
544 551
545 wait_callback = POPs; 552 wait_callback = POPs;
546 SvREFCNT_dec (req->callback);
547 req->callback = SvREFCNT_inc (POPs); 553 req->callback = SvREFCNT_inc (POPs);
548 } 554 }
549 555
550 ++nreqs; 556 ++nreqs;
551 557
752 } 758 }
753 759
754 --nready; 760 --nready;
755 761
756 X_UNLOCK (reqlock); 762 X_UNLOCK (reqlock);
757 763
758 switch (req->type) 764 switch (req->type)
759 { 765 {
760 case REQ_QUIT: 766 case REQ_QUIT:
761 req->result = ENOSYS; 767 req->result = ENOSYS;
762 goto quit; 768 goto quit;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines