File 0177-Make-re_SUITE-sub_binaries-less-unstable.patch of Package erlang

From 3f79a3d1b490e829403529fd245ab8d5120d5e0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?John=20H=C3=B6gberg?= <john@erlang.org>
Date: Tue, 27 Feb 2018 10:30:58 +0100
Subject: [PATCH] Make re_SUITE:sub_binaries less unstable

The small sub-binary conversion trick in the GC broke this test
pretty often on some machines.
---
 lib/stdlib/test/re_SUITE.erl | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/lib/stdlib/test/re_SUITE.erl b/lib/stdlib/test/re_SUITE.erl
index 71f86e32e5..7b82647416 100644
--- a/lib/stdlib/test/re_SUITE.erl
+++ b/lib/stdlib/test/re_SUITE.erl
@@ -916,10 +916,13 @@ match_limit(Config) when is_list(Config) ->
     "test that we get sub-binaries if subject is a binary and we "
 	"capture binaries";
 sub_binaries(Config) when is_list(Config) ->
-    Bin = list_to_binary(lists:seq(1,255)),
-    {match,[B,C]}=re:run(Bin,"(a)",[{capture,all,binary}]),
-    255 = binary:referenced_byte_size(B),
-    255 = binary:referenced_byte_size(C),
-    {match,[D]}=re:run(Bin,"(a)",[{capture,[1],binary}]),
-    255 = binary:referenced_byte_size(D),
+    %% The GC can auto-convert tiny sub-binaries to heap binaries, so we
+    %% extract large sequences to make the test more stable.
+    Bin = << <<I>> || I <- lists:seq(1, 4096) >>,
+    {match,[B,C]}=re:run(Bin,"a(.+)$",[{capture,all,binary}]),
+    true = byte_size(B) =/= byte_size(C),
+    4096 = binary:referenced_byte_size(B),
+    4096 = binary:referenced_byte_size(C),
+    {match,[D]}=re:run(Bin,"a(.+)$",[{capture,[1],binary}]),
+    4096 = binary:referenced_byte_size(D),
     ok.
-- 
2.16.2

openSUSE Build Service is sponsored by