Age | Commit message (Collapse) | Author |
|
The unicode update of test_server for R16A introduced a few potential
errors when logging to files. Sometimes ~tp or ~ts was used for
formatting also when writing to files that were not opened with the
{encoding,utf8} option. If then the argument contained unicode
characters above 255, the file descriptor would crash. This has been
corrected by the following modifications:
* Since the 'unexpected_io' log file is used only when the test case
HTML file is not available (e.g. between test cases), this file is
now also a HTML file and as other test_server HTML logs it is always
UTF-8 encoded
* Since it is possible to change which information is going to which
log file (with test_server_ctrl:set_levels/3), we do not have full
control over which information is written to which file. This means
that any printout could be written to the 'major' log file
(suite.log), which was earlier encoded as latin1. To avoid crashing
this file descriptor due to unicode strings, the 'major' log file is
now also encoded in UTF-8 (possible incopatibility).
* The cross_cover.info file is no longer a text file which can be read
with file:consult/1, instead it is written as a pure binary file
using term_to_binary when writing and binary_to_term when reading.
* The encoding of the file named 'last_name', which only content is
the path to the last run.<timestamp> directory, is now dependent on
the file name mode of the VM. If file names are expected to be
unicode, then the 'last_name' file is UTF-8 encoded, else it is
latin1 encoded.
Also, ~tp is changed back to ~p unless it is somehow likely that the
argument includes strings. It is not obvious that this is the correct
thing to do, but some decission had to be taken...
|
|
The ber_bin_v2 backend calls a NIF function to decode all tags
and lengths. Even open types that should not be decoded will also be
decoded, which makes it necessary to later re-encode the data using
a NIF function.
The NIF function incorrectly encoded lengths.
|
|
The test_modified_x420/1 test case had several problems that
prevented it to detect the bugs it was supposed to find:
1) There was a 'catch' at the top-level so that it could never fail.
2) There was a call to the now non-existing ssl_base64 module.
3) It did not test all options for the BER backend.
While at it, also clean way the remaining ?line macros and some
out-commented code.
|
|
|
|
This reverts commit a0e362765d9d4afb0211f49eb787d2139b3eb7be.
|
|
* bjorn/remove-packages/OTP-10348:
kernel docs: Remove references to specs_packages.xml
|
|
* bjorn/compiler/crash/OTP-10794:
Test setelement(1, not_a_tuple, NewValue)
Fix crash in the compiler when compiling element(2, not_a_tuple)
|
|
* bjorn/compiler/float/OTP-10788:
beam_type: Convert integer to float at compile time
compiler: Use the literal pool for floating point constants
|
|
|
|
|
|
The MIB comp�iler (snmpc) did not hanmdle import (from
SNMPv2-SMI) of (pseudo-) type BITS.
|
|
|
|
|
|
Now that we use an own deflater, we can also allow the user to specify the compression level as in Erlang's term_to_binary/2.
|
|
after the first try to compress the value with a fixed buffer size, the deflater must be closed so that memory can be (instantly) reused
|
|
(saves memory re-allocations)
|
|
Now, OtpOutputStream#write_compressed() uses the same mechanism as erts_term_to_binary() in external.c: it tries to compress the given term into a buffer of the size of the uncompressed term and if this is not possible, i.e. the compression plus headers is bigger, it uses the uncompressed external term format instead.
|
|
Compression always has at least 5 bytes (the compressed tag + original size) so we can't get a smaller external term if the original term is already smaller than 5 bytes.
|
|
ensure our growth strategy
Previously, if code called e.g. write(byte[] b, int off, int len), the growth strategy of the parent class ByteArrayOutputStream was used.
|
|
|
|
DeflaterOutputStream is already an FilterOutputStream
|
|
|
|
It does not make sense to return multiple values from a sequence
argument and the Kernel Erlang passes can't cope with it.
The linting pass now knows how to detect this kind of defunct code and
the Core code folding pass is changed to not generate code like that
when optimizing away multiple-valued lets in effect mode.
Reported-by: José Valim
|
|
servers behaves
Rationale:
Some applications (like erlide) have code to be loaded dynamically on a
node. It may be slow to load everything upfront every time, so if the
node is in interactive mode, we would like to just append to the load
path. Currently, there is no direct way to detect if the node is running
in embedded mode or not so that we can do the right thing.
|
|
Jinterface uses System.getProperty("user.home") to locate the user's home
and the cookie file. On Windows, the result might be different than the
value used by Erlang, which looks first to the HOMEDRIVE and HOMEPATH
variables.
The fix makes jinterface use the same logic.
|
|
The elems field would remain unitialized if the count parameter is zero in constructor
|
|
|
|
|
|
|
|
|
|
|
|
|
|
There are currently no keywords reserved for the future.
|
|
|
|
All guards BIFs are auto-imported. That can be verified like this:
[] = [{F,A} || {erlang,F,A} <- erlang:system_info(snifs),
erl_internal:guard_bif(F, A),
not erl_internal:bif(F, A)]
Therefore, calling a guard BIF in a guard without a module name
is always allowed (provided that there is not a local function or
an import with the same name), and therefore we can remove the
error reporting code. But keep an assertion so that we will find
out if any non-auto-imported guard BIFs are added in the future.
|
|
|
|
In code such as:
X / 2
the following code would be output from beam_type for the division:
{fconv,{x,0},{fr,0}}.
{fconv,{integer,2},{fr,1}}.
fclearerror.
{bif,fdiv,{f,0},[{fr,0},{fr,1}],{fr,0}}.
That is, the integer 2 would be converted to the float 2.0 at
run-time by "{fconv,{integer,2},{fr,1}}". Make sure that we do
the conversion at compile time.
Noticed-by: Richard O'Keefe
|
|
The BEAM loader will put floating point constants into the
literal pools for the module, but it will not check for duplicates.
We can do much better by having the compiler use the literal
pool for floating point constants.
|
|
|
|
|
|
|
|
|
|
This reverts commit a0e362765d9d4afb0211f49eb787d2139b3eb7be.
Conflicts:
erts/vsn.mk
|
|
* sa/dialyzer-minor-fixes/R16A:
Fix wording of error message
Fix reference results of a Dialyzer test
|
|
|
|
|
|
* pan/wx_and_gcc45:
Make Mac wx use Apple compilers regardless of $CC
|
|
* sverk/ets-write_concurrency-locks:
erts,stdlib: Increase number of locks for write_concurrency
OTP-10787
|
|
|
|
* fredrik/ssh/dialyzer-and-doc:
Fixed some broken links in ssh doc
Fixed some ssh documentation
|