Age | Commit message (Collapse) | Author |
|
* ta/asn1-gratuitous-output:
Remove gratuitous ok report in asn1ct
|
|
* ta/nested-records:
Document R14 paren-less record access/update
Support nested record field access without parentheses
OTP-8597 ta/nested-records
Nested records can now be accessed without parenthesis. See the Reference
Manual for examples. (Thanks to YAMASHINA Hio and Tuncer Ayaz.)
|
|
|
|
* ms/re_infinite_loop:
Add testcase for infinite loop problem caused by reset of match_call_count
re: Fix non-termination for a certain regular expression
OTP-8589 Pcre may hang on a special regexp
A bug in re that could cause certain regular expression matches never to
terminate is corrected. (Thanks to Michael Santos and Gordon Guthrie.)
|
|
|
|
|
|
|
|
|
|
Add a section to the reference manual describing the R14
change to not require parentheses when accessing or updating
fields in nested records.
Signed-off-by: Tuncer Ayaz <[email protected]>
|
|
Original patch from YAMASHINA Hio posted to erlang-patches@
on Tue Jun 12 11:27:53 CEST 2007:
http://www.erlang.org/pipermail/erlang-patches/2007-June/000182.html
http://fleur.hio.jp/pub/erlang/record2.patch
Only had to do minor changes to port the patch to the
current R14A development tree.
Also added compiler/record_SUITE:nested_access/2 to test
nested record access with or without parentheses.
With this change the following will work.
-record(nrec0, {name = <<"nested0">>}).
-record(nrec1, {name = <<"nested1">>, nrec0=#nrec0{}}).
-record(nrec2, {name = <<"nested2">>, nrec1=#nrec1{}}).
nested_access() ->
N0 = #nrec0{},
N1 = #nrec1{},
N2 = #nrec2{},
<<"nested0">> = N0#nrec0.name,
<<"nested1">> = N1#nrec1.name,
<<"nested2">> = N2#nrec2.name,
<<"nested0">> = N1#nrec1.nrec0#nrec0.name,
<<"nested0">> = N2#nrec2.nrec1#nrec1.nrec0#nrec0.name,
<<"nested1">> = N2#nrec2.nrec1#nrec1.name,
<<"nested0">> = ((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0.name,
N1a = N2#nrec2.nrec1#nrec1{name = <<"nested1a">>},
<<"nested1a">> = N1a#nrec1.name,
N2a = N2#nrec2.nrec1#nrec1.nrec0#nrec0{name = <<"nested0a">>},
N2b = ((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0{name = <<"nested0a">>},
<<"nested0a">> = N2a#nrec0.name,
N2a = N2b,
ok.
Signed-off-by: Tuncer Ayaz <[email protected]>
|
|
* bg/compiler-fmove-opt:
beam_type: Improve coalescing of fmove/2 and move/2 instructions
|
|
|
|
The following code never terminates:
fail() ->
Str = "http:/www.flickr.com/slideShow/index.gne?group_id=&user_id=69845378@N0",
EMail_regex = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+"
++ "(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*"
++ "@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+"
++ "(?:[a-zA-Z]{2}|com|org|net|gov|mil"
++ "|biz|info|mobi|name|aero|jobs|museum)",
io:format("about to run...~n"),
Ret = re:run(Str, EMail_regex),
io:format("Ret is ~p~n", [Ret]).
Fix it by having pcre_exec remember match_call_count between restarts.
Reported-by: Gordon Guthrie
Acked-by: Patrik Nyblom
|
|
* bg/deprecations:
test suites: Remove incidental use of deprecated concat_binary/1
Postpone removal of concat_binary/1
Remove deprecated lists:flat_length/1
OTP-8584 bg/deprecations
|
|
|
|
The function erl_scan:reserved_word/1 no longer returns true when given the
word spec. This bug was introduced in STDLIB-1.15.3 (R12B-3).
|
|
|
|
The following instruction sequence:
fmove {fr,Fr} {x,TempXreg}
move {x,TempXreg} {y,Dest}
is rewritten to:
fmove {fr,Fr} {y,Dest}
(Provided that {x,TempXreg} is killed by the instructions following
the sequence.)
Generalize the optimization to also handle:
fmove {fr,Fr} {x,TempXreg}
move {x,TempXreg} {_,Dest}
That is, the destination register can be either an X or Y register.
|
|
|
|
Temporary set the inet options on listen socket before doing accept
so that the correct options will be inherited by the accept socket.
Reset the options afterwards so that repeated use of listen socket
get user set values.
|
|
is not false.
|
|
|
|
|
|
|
|
|
|
* ms/pcre-compile-workspace-overrun:
re_SUITE: Add pcre_compile_workspace_overflow/1
MacOS X: Boost default stack size
Fix check for compile workspace overflow
OTP-8539 ms/pcre-compile-workspace-overrun
|
|
|
|
|
|
|
|
|
|
|
|
* ks/stdlib:
erl_parse.yrl: Add missing operator in type declaration
stdlib: Add types and specs
stdlib: Use fun object instead of {M,F} tuple
ets: Cleanup as suggested by tidier
OTP-8576 ks/stdlib
|
|
* jb/inet6-dist:
Support IPv6 addresses in long host names
Fix implementation of IPv6 TCP distribution protocol
Fix compilation of epmd with IPv6 enabled
OTP-8575 jb/inet6-dist
|
|
|
|
The default stack size on MacOS X for the SMP emulator is too small
to support all uses of pcre. For example, the following expression
N = 819, re:compile([lists:duplicate(N, $(), lists:duplicate(N, $))]).
will cause a stack overflow. By bisection of different values
for the +sss option, I found that 166 is the smallest value that
avoids the crash. Round that up to 256 to give a nice, round power
of 2 and a resonable safety margin. Use that value as a default stack
size on MacOS X only.
|
|
Patch from:
http://vcs.pcre.org/viewvc/code/trunk/pcre_compile.c?r1=504&r2=505&view=patch
Test case:
N = 819, re:compile([lists:duplicate(N, $(), lists:duplicate(N, $))]).
Compiling large regular expressions could overflow the workspace
buffer. Modify the test to check for a value smaller than the buffer
size.
|
|
|
|
|
|
|
|
|
|
|
|
* bg/fconv:
erts: Fix loading of modules with invalid floating point arithmetic
|
|
crypto:des_cbc_decrypt
|
|
When distributing over IPv4, node@<IPv4-address>
(e.g. [email protected]) works correctly.
Permit node@<IPv6-address> (e.g. node@::1) when
distributing over IPv6.
|
|
|
|
New ssl now properly handles ssl renegotiation, and initiates a
renegotiation if ssl/ltls-sequence numbers comes close to the max value.
|
|
|
|
|
|
|
|
|