@@ -102,7 +102,7 @@ impl<T> SCDynamicStoreBuilder<T> {
102102 }
103103
104104 /// Create the dynamic store session.
105- pub fn build ( mut self ) -> SCDynamicStore {
105+ pub fn build ( mut self ) -> Option < SCDynamicStore > {
106106 let store_options = self . create_store_options ( ) ;
107107 if let Some ( callback_context) = self . callback_context . take ( ) {
108108 SCDynamicStore :: create (
@@ -161,7 +161,7 @@ impl SCDynamicStore {
161161 store_options : & CFDictionary ,
162162 callout : SCDynamicStoreCallBack ,
163163 context : * mut SCDynamicStoreContext ,
164- ) -> Self {
164+ ) -> Option < Self > {
165165 unsafe {
166166 let store = SCDynamicStoreCreateWithOptions (
167167 kCFAllocatorDefault,
@@ -170,7 +170,11 @@ impl SCDynamicStore {
170170 callout,
171171 context,
172172 ) ;
173- SCDynamicStore :: wrap_under_create_rule ( store)
173+ if store. is_null ( ) {
174+ None
175+ } else {
176+ Some ( SCDynamicStore :: wrap_under_create_rule ( store) )
177+ }
174178 }
175179 }
176180
@@ -185,10 +189,10 @@ impl SCDynamicStore {
185189 self . as_concrete_TypeRef ( ) ,
186190 cf_pattern. as_concrete_TypeRef ( ) ,
187191 ) ;
188- if !array_ref. is_null ( ) {
189- Some ( CFArray :: wrap_under_create_rule ( array_ref) )
190- } else {
192+ if array_ref. is_null ( ) {
191193 None
194+ } else {
195+ Some ( CFArray :: wrap_under_create_rule ( array_ref) )
192196 }
193197 }
194198 }
@@ -268,14 +272,18 @@ impl SCDynamicStore {
268272 }
269273
270274 /// Creates a run loop source object that can be added to the application's run loop.
271- pub fn create_run_loop_source ( & self ) -> CFRunLoopSource {
275+ pub fn create_run_loop_source ( & self ) -> Option < CFRunLoopSource > {
272276 unsafe {
273277 let run_loop_source_ref = SCDynamicStoreCreateRunLoopSource (
274278 kCFAllocatorDefault,
275279 self . as_concrete_TypeRef ( ) ,
276280 0 ,
277281 ) ;
278- CFRunLoopSource :: wrap_under_create_rule ( run_loop_source_ref)
282+ if run_loop_source_ref. is_null ( ) {
283+ None
284+ } else {
285+ Some ( CFRunLoopSource :: wrap_under_create_rule ( run_loop_source_ref) )
286+ }
279287 }
280288 }
281289}
0 commit comments