@@ -260,8 +260,9 @@ typet string_data_type(symbol_tablet symbol_table)
260
260
{
261
261
symbolt sym=symbol_table.lookup (" java::java.lang.String" );
262
262
typet concrete_type=sym.type ;
263
- // TODO: Check that this is indeed the 'length' field.
264
- typet data_type=to_struct_type (concrete_type).components ()[2 ].type ();
263
+ struct_typet struct_type=to_struct_type (concrete_type);
264
+ std::size_t index =struct_type.component_number (" data" );
265
+ typet data_type=struct_type.components ()[index ].type ();
265
266
return data_type;
266
267
}
267
268
@@ -312,17 +313,14 @@ void java_string_library_preprocesst::add_string_type(
312
313
array_typet (java_char_type (), infinity_exprt (string_length_type ())));
313
314
string_type.add_base (symbol_typet (" java::java.lang.Object" ));
314
315
315
- symbolt string_symbol;
316
- string_symbol.name =" java::" +id2string (class_name);
317
- string_symbol.base_name =id2string (class_name);
318
- string_symbol.pretty_name =id2string (class_name);
319
- string_symbol.type =string_type;
320
- string_symbol.is_type =true ;
321
-
322
- // Overwrite any pre-existing symbol in the table, e.g. created by
323
- // a loaded model.
324
- symbol_table.remove (string_symbol.name );
325
- assert (!symbol_table.add (string_symbol));
316
+ symbolt tmp_string_symbol;
317
+ tmp_string_symbol.name =" java::" +id2string (class_name);
318
+ symbolt *string_symbol=nullptr ;
319
+ symbol_table.move (tmp_string_symbol, string_symbol);
320
+ string_symbol->base_name =id2string (class_name);
321
+ string_symbol->pretty_name =id2string (class_name);
322
+ string_symbol->type =string_type;
323
+ string_symbol->is_type =true ;
326
324
}
327
325
328
326
/* ******************************************************************\
0 commit comments