File tree Expand file tree Collapse file tree 1 file changed +32
-1
lines changed
tasmota/tasmota_xdrv_driver Expand file tree Collapse file tree 1 file changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -949,6 +949,36 @@ uint32_t Script_Find_Vars(char *sp) {
949
949
return (svars << 16 ) | numvars;
950
950
}
951
951
952
+ // get integer with math
953
+ int32_t get_math_intval (char *cp) {
954
+ int32_t result = strtol (cp, &cp, 10 );
955
+ while (*cp) {
956
+ while (*cp == ' ' ) cp++;
957
+ if (*cp == SCRIPT_EOL) { break ; }
958
+ switch (*cp) {
959
+ case ' +' :
960
+ cp++;
961
+ result += strtol (cp, &cp, 10 );
962
+ break ;
963
+ case ' -' :
964
+ cp++;
965
+ result -= strtol (cp, &cp, 10 );
966
+ break ;
967
+ case ' *' :
968
+ cp++;
969
+ result *= strtol (cp, &cp, 10 );
970
+ break ;
971
+ case ' /' :
972
+ cp++;
973
+ result /= strtol (cp, &cp, 10 );
974
+ break ;
975
+ }
976
+ }
977
+ return result;
978
+ // return atoi(cp);
979
+ }
980
+
981
+
952
982
// allocates all variables and presets them
953
983
int16_t Init_Scripter (void ) {
954
984
char *script;
@@ -1175,7 +1205,8 @@ char *script;
1175
1205
uint16_t flen = 1 ;
1176
1206
if (isdigit (*op)) {
1177
1207
// lenght define follows
1178
- flen = atoi (op);
1208
+ // flen = atoi(op);
1209
+ flen = get_math_intval (op);
1179
1210
if (flen > MAX_ARRAY_SIZE) {
1180
1211
// limit array size
1181
1212
flen = MAX_ARRAY_SIZE;
You can’t perform that action at this time.
0 commit comments