Commit 4583f5ceeec595794221a4e6fc92aa5c7b54714b

Authored by Tobias Doerffel
Committed by Stéphane Raimbault
1 parent 876a8d0d

Fix compile failure in modbus_rtu_get_serial_mode() without RS485 support

When there's no RS485 support available (e.g. on Win32), the modbus_rtu_t
data structure does not have the serial_mode member. It therefore must
not be used in modbus_rtu_get_serial_mode() if HAVE_DECL_TIOCSRS485 is
not defined. Fixes Win32 build with recent versions of libmodbus.
Showing 1 changed file with 8 additions and 0 deletions
src/modbus-rtu.c
... ... @@ -745,8 +745,16 @@ int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode)
745 745  
746 746 int modbus_rtu_get_serial_mode(modbus_t *ctx) {
747 747 if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
  748 +#if defined(HAVE_DECL_TIOCSRS485)
748 749 modbus_rtu_t *ctx_rtu = ctx->backend_data;
749 750 return ctx_rtu->serial_mode;
  751 +#else
  752 + if (ctx->debug) {
  753 + fprintf(stderr, "This function isn't supported on your platform\n");
  754 + }
  755 + errno = ENOTSUP;
  756 + return -1;
  757 +#endif
750 758 } else {
751 759 errno = EINVAL;
752 760 return -1;
... ...