[perl-Glib-Object-Introspection] Handle transfer setting for SV → string and filename



commit 8cbf4d8faebffaaf7e980ae74dd29acd81641383
Author: Torsten Schönfeld <kaffeetisch gmx de>
Date:   Tue Nov 9 23:42:12 2010 +0100

    Handle transfer setting for SV â?? string and filename

 GObjectIntrospection.xs |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
---
diff --git a/GObjectIntrospection.xs b/GObjectIntrospection.xs
index 32a70bd..d8506fa 100644
--- a/GObjectIntrospection.xs
+++ b/GObjectIntrospection.xs
@@ -1040,13 +1040,16 @@ sv_to_arg (SV * sv,
 		break;
 
 	    case GI_TYPE_TAG_UTF8:
-		/* FIXME: Check transfer setting. */
-		arg->v_string = SvOK (sv) ? SvGChar (sv) : NULL;
+		arg->v_string = gperl_sv_is_defined (sv) ? SvGChar (sv) : NULL;
+		if (transfer == GI_TRANSFER_EVERYTHING)
+			arg->v_string = g_strdup (arg->v_string);
 		break;
 
 	    case GI_TYPE_TAG_FILENAME:
-		/* FIXME: Check transfer setting. */
-		arg->v_string = SvOK (sv) ? gperl_filename_from_sv (sv) : NULL;
+		/* FIXME: Is it correct to use gperl_filename_from_sv here? */
+		arg->v_string = gperl_sv_is_defined (sv) ? gperl_filename_from_sv (sv) : NULL;
+		if (transfer == GI_TRANSFER_EVERYTHING)
+			arg->v_string = g_strdup (arg->v_string);
 		break;
 
 	    default:
@@ -1138,6 +1141,7 @@ arg_to_sv (GArgument * arg,
 
 	    case GI_TYPE_TAG_FILENAME:
 	    {
+		/* FIXME: Is it correct to use gperl_sv_from_filename here? */
 		SV *sv = gperl_sv_from_filename (arg->v_string);
 		if (own)
 			g_free (arg->v_string);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]