Skip to content

Commit 0aa3d14

Browse files
authored
fix: LDDataSourceStatusListener_Init should take pointer (#222)
This function previously took `LDDataSourceStatusListener` by value; now it takes a pointer. The impact would be if a customer forgot to initialize the struct, then the member(s) would be undefined.
1 parent be25fa3 commit 0aa3d14

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

libs/client-sdk/include/launchdarkly/client_side/bindings/c/sdk.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,7 @@ struct LDDataSourceStatusListener {
653653
* @param listener Listener to initialize.
654654
*/
655655
LD_EXPORT(void)
656-
LDDataSourceStatusListener_Init(struct LDDataSourceStatusListener listener);
656+
LDDataSourceStatusListener_Init(struct LDDataSourceStatusListener* listener);
657657

658658
/**
659659
* Listen for changes to the data source status.

libs/client-sdk/src/bindings/c/sdk.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -409,9 +409,9 @@ LDDataSourceStatus_ErrorInfo_Time(LDDataSourceStatus_ErrorInfo info) {
409409
}
410410

411411
LD_EXPORT(void)
412-
LDDataSourceStatusListener_Init(LDDataSourceStatusListener listener) {
413-
listener.StatusChanged = nullptr;
414-
listener.UserData = nullptr;
412+
LDDataSourceStatusListener_Init(struct LDDataSourceStatusListener* listener) {
413+
listener->StatusChanged = nullptr;
414+
listener->UserData = nullptr;
415415
}
416416

417417
LD_EXPORT(LDListenerConnection)

libs/client-sdk/tests/client_c_bindings_test.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,14 @@ TEST(ClientBindings, RegisterDataSourceStatusChangeListener) {
101101

102102
LDClientSDK sdk = LDClientSDK_New(config, context);
103103

104-
struct LDDataSourceStatusListener listener {};
105-
LDDataSourceStatusListener_Init(listener);
104+
struct LDDataSourceStatusListener listener {
105+
reinterpret_cast<DataSourceStatusCallbackFn>(0x123),
106+
reinterpret_cast<void*>(0x456)
107+
};
108+
LDDataSourceStatusListener_Init(&listener);
109+
110+
ASSERT_EQ(listener.StatusChanged, nullptr);
111+
ASSERT_EQ(listener.UserData, nullptr);
106112

107113
listener.UserData = const_cast<char*>("Potato");
108114
listener.StatusChanged = StatusListenerFunction;

0 commit comments

Comments
 (0)