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

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines