You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2013/02/13 17:21:35 UTC
svn commit: r1445705 - in /subversion/trunk/subversion/bindings/swig:
include/svn_types.swg perl/libsvn_swig_perl/swigutil_pl.c
perl/libsvn_swig_perl/swigutil_pl.h
Author: breser
Date: Wed Feb 13 16:21:35 2013
New Revision: 1445705
URL: http://svn.apache.org/r1445705
Log:
Cleaner solution to the problem fixed in r1445267.
* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
(svn_swig_pl_set_revision): Return a svn_opt_revision_t instead of using a
pointer to a pointer.
* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
(svn_swig_pl_set_revision): Update declaration.
* subversion/bindings/swig/include/svn_types.swg
(svn_opt_revision_t): Update typemap to match changes to
svn_swig_pl_set_revision().
Patch by: Roderich Schupp <roderich.schupp{_AT_}gmail.com>
Modified:
subversion/trunk/subversion/bindings/swig/include/svn_types.swg
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
Modified: subversion/trunk/subversion/bindings/swig/include/svn_types.swg
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/include/svn_types.swg?rev=1445705&r1=1445704&r2=1445705&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/include/svn_types.swg (original)
+++ subversion/trunk/subversion/bindings/swig/include/svn_types.swg Wed Feb 13 16:21:35 2013
@@ -1169,8 +1169,7 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
*/
#ifdef SWIGPERL
%typemap(in) svn_opt_revision_t * (svn_opt_revision_t rev) {
- $1 = &rev;
- svn_swig_pl_set_revision(&$1, $input);
+ $1 = svn_swig_pl_set_revision(&rev, $input);
}
#endif
Modified: subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1445705&r1=1445704&r2=1445705&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c (original)
+++ subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c Wed Feb 13 16:21:35 2013
@@ -315,30 +315,31 @@ SV *svn_swig_pl_revnums_to_list(const ap
}
/* perl -> c svn_opt_revision_t conversion */
-void svn_swig_pl_set_revision(svn_opt_revision_t **rev, SV *source)
+svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source)
{
if (source == NULL || source == &PL_sv_undef || !SvOK(source)) {
- (*rev)->kind = svn_opt_revision_unspecified;
+ rev->kind = svn_opt_revision_unspecified;
}
else if (sv_isobject(source) && sv_derived_from(source, "_p_svn_opt_revision_t")) {
- SWIG_ConvertPtr(source, (void **)rev, _SWIG_TYPE("svn_opt_revision_t *"), 0);
+ /* this will assign to rev */
+ SWIG_ConvertPtr(source, (void **)&rev, _SWIG_TYPE("svn_opt_revision_t *"), 0);
}
else if (looks_like_number(source)) {
- (*rev)->kind = svn_opt_revision_number;
- (*rev)->value.number = SvIV(source);
+ rev->kind = svn_opt_revision_number;
+ rev->value.number = SvIV(source);
}
else if (SvPOK(source)) {
char *input = SvPV_nolen(source);
if (svn_cstring_casecmp(input, "BASE") == 0)
- (*rev)->kind = svn_opt_revision_base;
+ rev->kind = svn_opt_revision_base;
else if (svn_cstring_casecmp(input, "HEAD") == 0)
- (*rev)->kind = svn_opt_revision_head;
+ rev->kind = svn_opt_revision_head;
else if (svn_cstring_casecmp(input, "WORKING") == 0)
- (*rev)->kind = svn_opt_revision_working;
+ rev->kind = svn_opt_revision_working;
else if (svn_cstring_casecmp(input, "COMMITTED") == 0)
- (*rev)->kind = svn_opt_revision_committed;
+ rev->kind = svn_opt_revision_committed;
else if (svn_cstring_casecmp(input, "PREV") == 0)
- (*rev)->kind = svn_opt_revision_previous;
+ rev->kind = svn_opt_revision_previous;
else if (*input == '{') {
svn_boolean_t matched;
apr_time_t tm;
@@ -360,8 +361,8 @@ void svn_swig_pl_set_revision(svn_opt_re
croak("unknown opt_revision_t string \"{%s}\": "
"svn_parse_date failed to parse it", input + 1);
- (*rev)->kind = svn_opt_revision_date;
- (*rev)->value.date = tm;
+ rev->kind = svn_opt_revision_date;
+ rev->value.date = tm;
} else
croak("unknown opt_revision_t string \"%s\": must be one of "
"\"BASE\", \"HEAD\", \"WORKING\", \"COMMITTED\", "
@@ -371,6 +372,8 @@ void svn_swig_pl_set_revision(svn_opt_re
"a string (one of \"BASE\", \"HEAD\", \"WORKING\", "
"\"COMMITTED\", \"PREV\" or a \"{DATE}\") "
"or a _p_svn_opt_revision_t object");
+
+ return rev;
}
/* put the va_arg in stack and invoke caller_func with func.
Modified: subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h?rev=1445705&r1=1445704&r2=1445705&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h (original)
+++ subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h Wed Feb 13 16:21:35 2013
@@ -106,7 +106,7 @@ SV *svn_swig_pl_convert_array(const apr_
SV *svn_swig_pl_revnums_to_list(const apr_array_header_t *array);
-void svn_swig_pl_set_revision(svn_opt_revision_t **rev, SV *source);
+svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source);
/* thunked log receiver function. */
svn_error_t * svn_swig_pl_thunk_log_receiver(void *py_receiver,