vlr_subscr: use osmo_use_count

Depends: Ife31e6798b4e728a23913179e346552a7dd338c0 (libosmocore)
Change-Id: Ib06d030e8464abe415ff597d462ed40eeddef475
diff --git a/tests/sms_queue/sms_queue_test.c b/tests/sms_queue/sms_queue_test.c
index 84ca6b5..495e078 100644
--- a/tests/sms_queue/sms_queue_test.c
+++ b/tests/sms_queue/sms_queue_test.c
@@ -27,6 +27,8 @@
 #include <osmocom/msc/vlr.h>
 #include <osmocom/msc/gsm_data.h>
 #include <osmocom/msc/gsm_04_11.h>
+#include <osmocom/msc/db.h>
+#include <osmocom/msc/sms_queue.h>
 
 static void *talloc_ctx = NULL;
 extern void *tall_gsms_ctx;
@@ -91,17 +93,25 @@
 							const char *last_msisdn,
 							unsigned int max_failed)
 {
-	static struct vlr_subscr arbitrary_vsub;
+	static struct vlr_subscr arbitrary_vsub = {};
+	static bool arbitrary_vsub_set_up = false;
 	struct gsm_sms *sms;
 	int i;
 	printf("     hitting database: looking for MSISDN > '%s', failed_attempts <= %d\n",
 	       last_msisdn, max_failed);
 
+	if (!arbitrary_vsub_set_up) {
+		osmo_use_count_make_static_entries(&arbitrary_vsub.use_count, arbitrary_vsub.use_count_buf,
+						   ARRAY_SIZE(arbitrary_vsub.use_count_buf));
+		arbitrary_vsub_set_up = true;
+	}
+
 	/* Every time we call sms_free(), the internal logic of libmsc
 	 * may call vlr_subscr_put() on our arbitrary_vsub, what would
 	 * lead to a segfault if its use_count <= 0. To prevent this,
 	 * let's ensure a big enough initial value. */
-	arbitrary_vsub.use_count = 1000;
+	osmo_use_count_get_put(&arbitrary_vsub.use_count, VSUB_USE_SMS_RECEIVER, 1000);
+	osmo_use_count_get_put(&arbitrary_vsub.use_count, VSUB_USE_SMS_PENDING, 1000);
 	arbitrary_vsub.lu_complete = true;
 
 	for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) {