diff --git a/Plugins/Msg2swiftCmdPlugin/plugin.swift b/Plugins/Msg2swiftCmdPlugin/plugin.swift new file mode 100644 index 0000000..0ad4ee8 --- /dev/null +++ b/Plugins/Msg2swiftCmdPlugin/plugin.swift @@ -0,0 +1,20 @@ +import PackagePlugin +import Foundation + +@main +struct Msg2swiftCmdPlugin: CommandPlugin { + func performCommand(context: PluginContext, arguments: [String]) throws { + let uicTool = try context.tool(named: "msg2swift").path + let process = try Process.run(URL(fileURLWithPath: uicTool.string), arguments: arguments) + process.waitUntilExit() + + guard + process.terminationReason == .exit, + process.terminationStatus == 0 + else { + let problem = "\(process.terminationReason):\(process.terminationStatus)" + Diagnostics.error("msg2swift invocation failed: \(problem)") + return + } + } +} diff --git a/Sources/CDRCodable/Decoder/CDRDecoder.swift b/Sources/CDRCodable/Decoder/CDRDecoder.swift index 8904a5f..8ea85e3 100644 --- a/Sources/CDRCodable/Decoder/CDRDecoder.swift +++ b/Sources/CDRCodable/Decoder/CDRDecoder.swift @@ -141,7 +141,7 @@ extension DataStore { defer { cursor = cursor.advanced(by: stride) } - return data.withUnsafeBytes{ $0.load(fromByteOffset: cursor - beginIndex, as: T.self) } + return data.withUnsafeBytes{ $0.loadUnaligned(fromByteOffset: cursor - beginIndex, as: T.self) } } @inline(__always)