summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-11-11 15:45:04 +0000
committerVivien Kraus <vivien@planete-kraus.eu>2021-11-11 16:08:49 +0000
commitc5ac3629c9af092c11da0ac06c37af466f65dba2 (patch)
tree821bc25ad854e15ec422004a96b216f357d1a390
parent6c1cf4ff460112b8651684dbcf69a624312ac5a6 (diff)
Client API: use custom vala code to register the destructor
-rw-r--r--src/client/Disfluid-0.h2
-rw-r--r--src/client/Makefile.am6
-rw-r--r--src/client/disfluid-0-custom.vala21
-rw-r--r--src/client/libwebidoidc-client.c5
4 files changed, 29 insertions, 5 deletions
diff --git a/src/client/Disfluid-0.h b/src/client/Disfluid-0.h
index 05ce0c4..1344836 100644
--- a/src/client/Disfluid-0.h
+++ b/src/client/Disfluid-0.h
@@ -51,7 +51,7 @@ typedef void *(*DisfluidUser) (const DisfluidApi * api, void *data);
void *disfluid_api_init (DisfluidUser func, void *data);
/**
- * DisfluidClient: (unref-func disfluid_client_free):
+ * DisfluidClient:
*
* A client contains a client ID, redirection URI and an associated
* key pair.
diff --git a/src/client/Makefile.am b/src/client/Makefile.am
index aad9fbc..f447adf 100644
--- a/src/client/Makefile.am
+++ b/src/client/Makefile.am
@@ -36,7 +36,7 @@ vapidir = $(datadir)/vala/vapi
dist_vapi_DATA = %reldir%/disfluid-0.vapi
-EXTRA_DIST += %reldir%/Disfluid-0.metadata
+EXTRA_DIST += %reldir%/Disfluid-0.metadata %reldir%/disfluid-0-custom.vala
CLEANFILES += %reldir%/vapi-generation
@@ -48,10 +48,10 @@ CLEANFILES += %reldir%/vapi-generation
$(AM_V_GEN) $(G_IR_COMPILER) -o $@-t --shared-library=libwebidoidc $(srcdir)/$<
@mv $@-t $(srcdir)/$@
-%reldir%/disfluid-0.vapi: %reldir%/Disfluid-0.gir %reldir%/Disfluid-0.metadata
+%reldir%/disfluid-0.vapi: %reldir%/Disfluid-0.gir %reldir%/Disfluid-0.metadata %reldir%/disfluid-0-custom.vala
@rm -rf %reldir%/vapi-generation
@mkdir %reldir%/vapi-generation
- $(AM_V_GEN) $(VAPIGEN) --library disfluid-0 -d %reldir%/vapi-generation $(srcdir)/$< --metadatadir=$(srcdir)/%reldir%
+ $(AM_V_GEN) $(VAPIGEN) --library disfluid-0 -d %reldir%/vapi-generation $(srcdir)/$< --metadatadir=$(srcdir)/%reldir% $(srcdir)/%reldir%/disfluid-0-custom.vala
@mv %reldir%/vapi-generation/disfluid-0.vapi $@-t
@rmdir %reldir%/vapi-generation
@mv $@-t $(srcdir)/$@
diff --git a/src/client/disfluid-0-custom.vala b/src/client/disfluid-0-custom.vala
new file mode 100644
index 0000000..295c67c
--- /dev/null
+++ b/src/client/disfluid-0-custom.vala
@@ -0,0 +1,21 @@
+// disfluid, implementation of the Solid specification
+// Copyright (C) 2021 Vivien Kraus
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+namespace Disfluid {
+ [CCode (free_function = "disfluid_client_free")]
+ [Compact]
+ public class Client { }
+} \ No newline at end of file
diff --git a/src/client/libwebidoidc-client.c b/src/client/libwebidoidc-client.c
index 836ff69..fbe2343 100644
--- a/src/client/libwebidoidc-client.c
+++ b/src/client/libwebidoidc-client.c
@@ -88,7 +88,10 @@ disfluid_client_make (const struct DisfluidApi *api,
void
disfluid_client_free (struct DisfluidClient *client)
{
- scm_gc_unprotect_object (client->object);
+ if (client)
+ {
+ scm_gc_unprotect_object (client->object);
+ }
free (client);
}