@@ -1035,7 +1035,7 @@ SEXP rnng_get_opt(SEXP object, SEXP opt) {
10351035 for (;;) {
10361036 xc = nng_listener_get_string (* list , op , & optval .str );
10371037 if (xc == 0 ) { typ = 1 ; break ; }
1038- xc = nng_listener_get_ms (* list , op , & optval .i );
1038+ xc = nng_listener_get_ms (* list , op , & optval .d );
10391039 if (xc == 0 ) { typ = 2 ; break ; }
10401040 xc = nng_listener_get_size (* list , op , & optval .s );
10411041 if (xc == 0 ) { typ = 3 ; break ; }
@@ -1053,7 +1053,7 @@ SEXP rnng_get_opt(SEXP object, SEXP opt) {
10531053 for (;;) {
10541054 xc = nng_dialer_get_string (* dial , op , & optval .str );
10551055 if (xc == 0 ) { typ = 1 ; break ; }
1056- xc = nng_dialer_get_ms (* dial , op , & optval .i );
1056+ xc = nng_dialer_get_ms (* dial , op , & optval .d );
10571057 if (xc == 0 ) { typ = 2 ; break ; }
10581058 xc = nng_dialer_get_size (* dial , op , & optval .s );
10591059 if (xc == 0 ) { typ = 3 ; break ; }
@@ -1074,13 +1074,22 @@ SEXP rnng_get_opt(SEXP object, SEXP opt) {
10741074
10751075 switch (typ ) {
10761076 case 1 :
1077- out = Rf_mkString (* ( char * * ) & optval );
1077+ out = Rf_mkString (optval . str );
10781078 break ;
1079- case 6 :
1080- out = Rf_ScalarReal (* (double * ) & optval );
1079+ case 2 :
1080+ out = Rf_ScalarInteger ((int ) optval .d );
1081+ break ;
1082+ case 3 :
1083+ out = Rf_ScalarInteger ((int ) optval .s );
1084+ break ;
1085+ case 4 :
1086+ out = Rf_ScalarInteger (optval .i );
1087+ break ;
1088+ case 5 :
1089+ out = Rf_ScalarInteger ((int ) optval .b );
10811090 break ;
10821091 default :
1083- out = Rf_ScalarInteger ( * ( int * ) & optval );
1092+ out = Rf_ScalarReal (( double ) optval . u );
10841093 }
10851094
10861095 return out ;
0 commit comments