comparison src/http/modules/perl/nginx.xs @ 1703:43747661804d

*) copy regex captures $1, $2, etc. *) SV flags debug logging
author Igor Sysoev <igor@sysoev.ru>
date Sun, 09 Dec 2007 20:52:14 +0000
parents 4c43e25d11ea
children 5b7baef2e11e
comparison
equal deleted inserted replaced
1702:86bb52e28ce0 1703:43747661804d
40 40
41 p = (u_char *) SvPV(sv, len); 41 p = (u_char *) SvPV(sv, len);
42 42
43 s->len = len; 43 s->len = len;
44 44
45 if (SvREADONLY(sv)) { 45 if (SvREADONLY(sv) && SvPOK(sv)) {
46 s->data = p; 46 s->data = p;
47
48 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
49 "perl sv2str: %08XD \"%V\"", sv->sv_flags, s);
50
47 return NGX_OK; 51 return NGX_OK;
48 } 52 }
49 53
50 s->data = ngx_palloc(r->pool, len); 54 s->data = ngx_palloc(r->pool, len);
51 if (s->data == NULL) { 55 if (s->data == NULL) {
52 return NGX_ERROR; 56 return NGX_ERROR;
53 } 57 }
54 58
55 ngx_memcpy(s->data, p, len); 59 ngx_memcpy(s->data, p, len);
60
61 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
62 "perl sv2str: %08XD \"%V\"", sv->sv_flags, s);
56 63
57 return NGX_OK; 64 return NGX_OK;
58 } 65 }
59 66
60 67
530 537
531 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PV) { 538 if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PV) {
532 sv = SvRV(sv); 539 sv = SvRV(sv);
533 } 540 }
534 541
535 if (SvREADONLY(sv)) { 542 if (SvREADONLY(sv) && SvPOK(sv)) {
536 543
537 p = (u_char *) SvPV(sv, len); 544 p = (u_char *) SvPV(sv, len);
538 545
539 if (len == 0) { 546 if (len == 0) {
540 XSRETURN_EMPTY; 547 XSRETURN_EMPTY;