@@ -573,6 +573,7 @@ static codet make_allocate_code(const symbol_exprt &lhs, const exprt &size)
573
573
bool initialize_nondet_string_fields (
574
574
struct_exprt &struct_expr,
575
575
code_blockt &code,
576
+ const std::size_t &min_nondet_string_length,
576
577
const std::size_t &max_nondet_string_length,
577
578
const source_locationt &loc,
578
579
const irep_idt &function_id,
@@ -627,11 +628,10 @@ bool initialize_nondet_string_fields(
627
628
code.add (code_declt (length_expr));
628
629
code.add (code_assignt (length_expr, nondet_length));
629
630
630
- // assume (length_expr >= 0);
631
- code.add (
632
- code_assumet (
633
- binary_relation_exprt (
634
- length_expr, ID_ge, from_integer (0 , java_int_type ()))));
631
+ // assume (length_expr >= min_nondet_string_length);
632
+ const exprt min_length =
633
+ from_integer (min_nondet_string_length, java_int_type ());
634
+ code.add (code_assumet (binary_relation_exprt (length_expr, ID_ge, min_length)));
635
635
636
636
// assume (length_expr <= max_input_length)
637
637
if (max_nondet_string_length <= max_value (length_expr.type ()))
@@ -1044,15 +1044,15 @@ void java_object_factoryt::gen_nondet_struct_init(
1044
1044
// If the initialised type is a special-cased String type (one with length
1045
1045
// and data fields introduced by string-library preprocessing), initialise
1046
1046
// those fields with nondet values:
1047
- skip_special_string_fields =
1048
- initialize_nondet_string_fields (
1049
- to_struct_expr (initial_object) ,
1050
- assignments ,
1051
- object_factory_parameters.max_nondet_string_length ,
1052
- loc,
1053
- object_factory_parameters.function_id ,
1054
- symbol_table,
1055
- object_factory_parameters.string_printable );
1047
+ skip_special_string_fields = initialize_nondet_string_fields (
1048
+ to_struct_expr (initial_object),
1049
+ assignments ,
1050
+ object_factory_parameters. min_nondet_string_length ,
1051
+ object_factory_parameters.max_nondet_string_length ,
1052
+ loc,
1053
+ object_factory_parameters.function_id ,
1054
+ symbol_table,
1055
+ object_factory_parameters.string_printable );
1056
1056
1057
1057
assignments.copy_to_operands (
1058
1058
code_assignt (expr, initial_object));
0 commit comments