@@ -4186,20 +4186,13 @@ static bool bif_sys_read_term_from_chars_4(query *q)
41864186 return throw_error (q , p_chars , p_chars_ctx , "type_error" , "character" );
41874187 }
41884188
4189- str -> p = parser_create (q -> st .m );
4190- str -> p -> flags = q -> st .m -> flags ;
4191- str -> p -> fp = str -> fp ;
4192- parser_reset (str -> p );
4193- str -> p -> srcptr = src ;
4194-
41954189 if (!src || !* src ) {
4196- parser_destroy (str -> p );
41974190 cell tmp ;
41984191 make_atom (& tmp , g_eof_s );
41994192 return unify (q , p_term , p_term_ctx , & tmp , q -> st .cur_ctx );
42004193 }
42014194
4202- bool ok = do_read_term (q , str , p_term , p_term_ctx , p_opts , p_opts_ctx , NULL );
4195+ bool ok = do_read_term (q , str , p_term , p_term_ctx , p_opts , p_opts_ctx , src );
42034196
42044197 if (ok != true) {
42054198 if (!is_string (p_chars ))
@@ -4232,8 +4225,6 @@ static bool bif_sys_read_term_from_chars_4(query *q)
42324225 make_atom (& tmp , g_nil_s );
42334226 }
42344227
4235- parser_destroy (str -> p );
4236-
42374228 if (!is_string (p_chars ))
42384229 free (src );
42394230
@@ -4281,21 +4272,6 @@ static bool bif_read_term_from_chars_3(query *q)
42814272 return throw_error (q , p_chars , p_chars_ctx , "type_error" , "character" );
42824273 }
42834274
4284- str -> p = parser_create (q -> st .m );
4285- str -> p -> flags = q -> st .m -> flags ;
4286- str -> p -> fp = str -> fp ;
4287- parser_reset (str -> p );
4288- char * save_src = src ;
4289- str -> p -> srcptr = src ;
4290-
4291- if (!src || !* src ) {
4292- parser_destroy (str -> p );
4293- free (save_src );
4294- cell tmp ;
4295- make_atom (& tmp , g_eof_s );
4296- return unify (q , p_term , p_term_ctx , & tmp , q -> st .cur_ctx );
4297- }
4298-
42994275 const char * end_ptr = src + strlen (src ) - 1 ;
43004276
43014277 while (isspace (* end_ptr ) && (end_ptr != src ))
@@ -4304,14 +4280,8 @@ static bool bif_read_term_from_chars_3(query *q)
43044280 if (src [strlen (src )- 1 ] != '.' )
43054281 strcat (src , "." );
43064282
4307- bool ok = do_read_term (q , str , p_term , p_term_ctx , p_opts , p_opts_ctx , NULL );
4308- parser_reset (str -> p );
4309- parser_destroy (str -> p );
4310- free (save_src );
4311-
4312- if (ok != true)
4313- return false;
4314-
4283+ bool ok = do_read_term (q , str , p_term , p_term_ctx , p_opts , p_opts_ctx , src );
4284+ free (src );
43154285 return ok ;
43164286}
43174287
@@ -4349,7 +4319,6 @@ static bool bif_read_term_from_atom_3(query *q)
43494319 strcat (src , "." );
43504320
43514321 bool ok = do_read_term (q , str , p_term , p_term_ctx , p_opts , p_opts_ctx , src );
4352- parser_destroy (str -> p );
43534322 free (src );
43544323 return ok ;
43554324}
0 commit comments