0

このコードは Semgentation Fault: 11 で失敗し、その理由がわかりません

framework 'Cocoa'
framework 'CoreFoundation'
framework 'Security'
* keychainObject = Pointer.new_with_type('^{OpaqueSecKeychainRef}')
SecKeychainOpen("/Users/charbon/Library/Keychains/Josja.keychain",keychainObject)
SecKeychainLock(keychainObject)

これは機能するため(デフォルトのキーチェーンをロックします)、keychainObjectタイプと関係があると確信しています。

SecKeychainLock(nil) 

'^{OpaqueSecKeychainRef}' をポインターの型として使用しています。これは、間違った型のポインターを使用したときに、デバッガーが期待していたものであると言ったためです。

これを解決することが、macruby / cocoa の魔法を理解するのに役立つことを願っています。

参考までに、完全な出力は次のとおりです。

cobalt:~ charbon$ macirb Desktop/test.rb 
irb(main):001:0> framework 'Cocoa'
=> true
irb(main):002:0> framework 'CoreFoundation'
=> true
irb(main):003:0> framework 'Security'
=> true
irb(main):004:0> * keychainObject = Pointer.new_with_type('^{OpaqueSecKeychainRef}')
=> [#<Pointer:0x4007ac200>]
irb(main):005:0> SecKeychainOpen("/Users/charbon/Library/Keychains/Josja.keychain",keychainObject)
=> 0
irb(main):006:0> SecKeychainLock(keychainObject)
Segmentation fault: 11
4

1 に答える 1