fix: move __stdcall behind the pointer in the candle API

MSVC rejects a calling convention placed before the '*' of a pointer return
type with C2165, so every translation unit including candle.h failed to
compile. MinGW accepts the upstream spelling, which is why the cross build
did not catch this.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XZnuZJ7zc3e8hk6C8bGDZN
This commit is contained in:
Refuhr
2026-07-29 11:26:12 +02:00
co-authored by Claude Opus 5
parent 3ae429ae48
commit c39c8660d7
3 changed files with 1157 additions and 1149 deletions
+9 -1
View File
@@ -1,6 +1,6 @@
# candle API (gs_usb / candleLight Windows driver)
Vendored, unmodified copy of the candle Windows API used by SavvyCAN's gs_usb
Vendored copy of the candle Windows API used by SavvyCAN's gs_usb
connection (`connections/gs_usb.cpp`). It talks to gs_usb class devices
(candleLight, CANable, CANnectivity, cantact, ...) over WinUSB, so no vendor
driver is needed — only a WinUSB binding on the device interface (which the
@@ -13,6 +13,14 @@ stock candleLight/CANable firmware already declares via WCID descriptors).
at commit `ed3088d5393e02a01afe867af2ee8ab0e12db039`, which adds CAN FD,
multi-channel and hardware timestamp support — Copyright (c) 2026 Schildkroet
## Local changes
Kept to the minimum needed to build here; re-apply them when refreshing from upstream.
- `candle.h` / `candle.c`: the three functions returning a pointer declared the calling
convention before the `*` (`wchar_t __stdcall DLL *candle_dev_get_path`). MinGW accepts
that, MSVC rejects it with C2165, so `__stdcall` moved behind the `*`.
## License
These files are **LGPL-3.0**, not MIT like the rest of SavvyCAN. They are only
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -237,7 +237,7 @@ bool __stdcall DLL candle_list_length(candle_list_handle list, uint8_t *len);
bool __stdcall DLL candle_dev_get(candle_list_handle list, uint8_t dev_num, candle_handle *hdev);
bool __stdcall DLL candle_dev_get_state(candle_handle hdev, candle_devstate_t *state);
wchar_t __stdcall DLL *candle_dev_get_path(candle_handle hdev);
wchar_t * __stdcall DLL candle_dev_get_path(candle_handle hdev);
bool __stdcall DLL candle_dev_open(candle_handle hdev);
bool __stdcall DLL candle_dev_get_timestamp_us(candle_handle hdev, uint32_t *timestamp_us);
bool __stdcall DLL candle_dev_close(candle_handle hdev);
@@ -259,7 +259,7 @@ uint32_t __stdcall DLL candle_frame_id(candle_frame_t *frame);
bool __stdcall DLL candle_frame_is_extended_id(candle_frame_t *frame);
bool __stdcall DLL candle_frame_is_rtr(candle_frame_t *frame);
uint8_t __stdcall DLL candle_frame_dlc(candle_frame_t *frame);
uint8_t __stdcall DLL *candle_frame_data(candle_frame_t *frame);
uint8_t * __stdcall DLL candle_frame_data(candle_frame_t *frame);
uint32_t __stdcall DLL candle_frame_timestamp_us(candle_frame_t *frame);
/* CAN FD extensions */
@@ -274,7 +274,7 @@ bool __stdcall DLL candle_fd_frame_is_rtr(candle_fd_frame_t *frame);
bool __stdcall DLL candle_fd_frame_is_fd(candle_fd_frame_t *frame);
bool __stdcall DLL candle_fd_frame_is_brs(candle_fd_frame_t *frame);
uint8_t __stdcall DLL candle_fd_frame_dlc(candle_fd_frame_t *frame);
uint8_t __stdcall DLL *candle_fd_frame_data(candle_fd_frame_t *frame);
uint8_t * __stdcall DLL candle_fd_frame_data(candle_fd_frame_t *frame);
uint32_t __stdcall DLL candle_fd_frame_timestamp_us(candle_fd_frame_t *frame);
candle_err_t __stdcall DLL candle_dev_last_error(candle_handle hdev);