diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/kernel/doc/src/gen_sctp.xml | 6 | ||||
-rw-r--r-- | lib/kernel/src/code.erl | 3 | ||||
-rw-r--r-- | lib/kernel/src/gen_sctp.erl | 10 | ||||
-rw-r--r-- | lib/kernel/src/inet_sctp.erl | 10 | ||||
-rw-r--r-- | lib/kernel/test/code_SUITE.erl | 38 | ||||
-rw-r--r-- | lib/kernel/test/code_SUITE_data/clash/foobar-0.1.ez | bin | 0 -> 505 bytes | |||
-rw-r--r-- | lib/kernel/test/code_SUITE_data/clash/foobar-0.1/ebin/baz.beam | 1 | ||||
-rw-r--r-- | lib/kernel/test/code_SUITE_data/clash/foobar-0.1/ebin/blarg.beam | 1 | ||||
-rw-r--r-- | lib/kernel/test/code_SUITE_data/clash/zork-0.8.ez | bin | 0 -> 492 bytes | |||
-rw-r--r-- | lib/kernel/test/code_SUITE_data/clash/zork-0.8/ebin/bork.beam | 1 | ||||
-rw-r--r-- | lib/kernel/test/code_SUITE_data/clash/zork-0.8/ebin/flarp.beam | 1 | ||||
-rw-r--r-- | lib/kernel/test/gen_sctp_SUITE.erl | 10 | ||||
-rw-r--r-- | lib/odbc/c_src/odbcserver.c | 36 |
13 files changed, 81 insertions, 36 deletions
diff --git a/lib/kernel/doc/src/gen_sctp.xml b/lib/kernel/doc/src/gen_sctp.xml index 40efba2bb7..3a8011e28b 100644 --- a/lib/kernel/doc/src/gen_sctp.xml +++ b/lib/kernel/doc/src/gen_sctp.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2007</year><year>2009</year> + <year>2007</year><year>2010</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -13,12 +13,12 @@ compliance with the License. You should have received a copy of the Erlang Public License along with this software. If not, it can be retrieved online at http://www.erlang.org/. - + Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. - + </legalnotice> <title>gen_sctp</title> diff --git a/lib/kernel/src/code.erl b/lib/kernel/src/code.erl index 89d893f8c1..ffe58ae7a9 100644 --- a/lib/kernel/src/code.erl +++ b/lib/kernel/src/code.erl @@ -465,7 +465,8 @@ search([{Dir, File} | Tail]) -> build([]) -> []; build([Dir|Tail]) -> - Files = filter(objfile_extension(), Dir, file:list_dir(Dir)), + Files = filter(objfile_extension(), Dir, + erl_prim_loader:list_dir(Dir)), [decorate(Files, Dir) | build(Tail)]. decorate([], _) -> []; diff --git a/lib/kernel/src/gen_sctp.erl b/lib/kernel/src/gen_sctp.erl index 0665d2e14d..5a31e3976f 100644 --- a/lib/kernel/src/gen_sctp.erl +++ b/lib/kernel/src/gen_sctp.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2007-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2007-2010. All Rights Reserved. +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% %% diff --git a/lib/kernel/src/inet_sctp.erl b/lib/kernel/src/inet_sctp.erl index 6fdd4bf789..795bf83807 100644 --- a/lib/kernel/src/inet_sctp.erl +++ b/lib/kernel/src/inet_sctp.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2007-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2007-2010. All Rights Reserved. +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% %% %% SCTP protocol contribution by Leonid Timochouk and Serge Aleynikov. diff --git a/lib/kernel/test/code_SUITE.erl b/lib/kernel/test/code_SUITE.erl index 8e1e3d5390..37b9200942 100644 --- a/lib/kernel/test/code_SUITE.erl +++ b/lib/kernel/test/code_SUITE.erl @@ -26,7 +26,7 @@ delete/1, purge/1, soft_purge/1, is_loaded/1, all_loaded/1, load_binary/1, dir_req/1, object_code/1, set_path_file/1, sticky_dir/1, pa_pz_option/1, add_del_path/1, - dir_disappeared/1, ext_mod_dep/1, + dir_disappeared/1, ext_mod_dep/1, clash/1, load_cached/1, start_node_with_cache/1, add_and_rehash/1, where_is_file_cached/1, where_is_file_no_cache/1, purge_stacktrace/1, mult_lib_roots/1, bad_erl_libs/1, @@ -48,7 +48,7 @@ all(suite) -> delete, purge, soft_purge, is_loaded, all_loaded, load_binary, dir_req, object_code, set_path_file, pa_pz_option, add_del_path, - dir_disappeared, ext_mod_dep, + dir_disappeared, ext_mod_dep, clash, load_cached, start_node_with_cache, add_and_rehash, where_is_file_no_cache, where_is_file_cached, purge_stacktrace, mult_lib_roots, bad_erl_libs, @@ -531,7 +531,7 @@ pa_pz_option(Config) when is_list(Config) -> add_del_path(suite) -> []; add_del_path(doc) -> ["add_path, del_path should not cause priv_dir(App) to fail"]; -add_del_path(Config) -> +add_del_path(Config) when is_list(Config) -> DDir = ?config(data_dir,Config), Dir1 = filename:join(DDir,"dummy_app-1.0/ebin"), Dir2 = filename:join(DDir,"dummy_app-2.0/ebin"), @@ -545,6 +545,38 @@ add_del_path(Config) -> ok. +clash(Config) when is_list(Config) -> + DDir = ?config(data_dir,Config)++"clash/", + P = code:get_path(), + + %% test non-clashing entries + + %% remove "." to prevent clash with test-server path + ?line true = code:del_path("."), + ?line true = code:add_path(DDir++"foobar-0.1/ebin"), + ?line true = code:add_path(DDir++"zork-0.8/ebin"), + ?line test_server:capture_start(), + ?line code:clash(), + ?line test_server:capture_stop(), + ?line OKMsg = test_server:capture_get(), + ?line lists:prefix("** Found 0 name clashes in code paths", OKMsg), + ?line true = code:set_path(P), + + %% test clashing entries + + %% remove "." to prevent clash with test-server path + ?line true = code:del_path("."), + ?line true = code:add_path(DDir++"foobar-0.1/ebin"), + ?line true = code:add_path(DDir++"foobar-0.1.ez/foobar-0.1/ebin"), + ?line test_server:capture_start(), + ?line code:clash(), + ?line test_server:capture_stop(), + ?line [ErrMsg1|_] = test_server:capture_get(), + ?line {match, [" hides "]} = re:run(ErrMsg1, "\\*\\* .*( hides ).*", + [{capture,all_but_first,list}]), + ?line true = code:set_path(P), + ok. + ext_mod_dep(suite) -> []; ext_mod_dep(doc) -> diff --git a/lib/kernel/test/code_SUITE_data/clash/foobar-0.1.ez b/lib/kernel/test/code_SUITE_data/clash/foobar-0.1.ez Binary files differnew file mode 100644 index 0000000000..33d8a59b92 --- /dev/null +++ b/lib/kernel/test/code_SUITE_data/clash/foobar-0.1.ez diff --git a/lib/kernel/test/code_SUITE_data/clash/foobar-0.1/ebin/baz.beam b/lib/kernel/test/code_SUITE_data/clash/foobar-0.1/ebin/baz.beam new file mode 100644 index 0000000000..da87f32b9f --- /dev/null +++ b/lib/kernel/test/code_SUITE_data/clash/foobar-0.1/ebin/baz.beam @@ -0,0 +1 @@ +baz 298734 diff --git a/lib/kernel/test/code_SUITE_data/clash/foobar-0.1/ebin/blarg.beam b/lib/kernel/test/code_SUITE_data/clash/foobar-0.1/ebin/blarg.beam new file mode 100644 index 0000000000..e4c70c267c --- /dev/null +++ b/lib/kernel/test/code_SUITE_data/clash/foobar-0.1/ebin/blarg.beam @@ -0,0 +1 @@ +baz 86234 diff --git a/lib/kernel/test/code_SUITE_data/clash/zork-0.8.ez b/lib/kernel/test/code_SUITE_data/clash/zork-0.8.ez Binary files differnew file mode 100644 index 0000000000..051fa1efe4 --- /dev/null +++ b/lib/kernel/test/code_SUITE_data/clash/zork-0.8.ez diff --git a/lib/kernel/test/code_SUITE_data/clash/zork-0.8/ebin/bork.beam b/lib/kernel/test/code_SUITE_data/clash/zork-0.8/ebin/bork.beam new file mode 100644 index 0000000000..7b292c0b44 --- /dev/null +++ b/lib/kernel/test/code_SUITE_data/clash/zork-0.8/ebin/bork.beam @@ -0,0 +1 @@ +baz 23784 diff --git a/lib/kernel/test/code_SUITE_data/clash/zork-0.8/ebin/flarp.beam b/lib/kernel/test/code_SUITE_data/clash/zork-0.8/ebin/flarp.beam new file mode 100644 index 0000000000..7b2f6a850f --- /dev/null +++ b/lib/kernel/test/code_SUITE_data/clash/zork-0.8/ebin/flarp.beam @@ -0,0 +1 @@ +baz 3246238 diff --git a/lib/kernel/test/gen_sctp_SUITE.erl b/lib/kernel/test/gen_sctp_SUITE.erl index b19ce4d40b..fad8c7398b 100644 --- a/lib/kernel/test/gen_sctp_SUITE.erl +++ b/lib/kernel/test/gen_sctp_SUITE.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2007-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2007-2010. All Rights Reserved. +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% %% -module(gen_sctp_SUITE). diff --git a/lib/odbc/c_src/odbcserver.c b/lib/odbc/c_src/odbcserver.c index 63177121bc..6a920e6c76 100644 --- a/lib/odbc/c_src/odbcserver.c +++ b/lib/odbc/c_src/odbcserver.c @@ -1,19 +1,19 @@ /* * %CopyrightBegin% - * - * Copyright Ericsson AB 1999-2009. All Rights Reserved. - * + * + * Copyright Ericsson AB 1999-2010. All Rights Reserved. + * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in * compliance with the License. You should have received a copy of the * Erlang Public License along with this software. If not, it can be * retrieved online at http://www.erlang.org/. - * + * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. - * + * * %CopyrightEnd% * @@ -749,11 +749,12 @@ static db_result_msg db_param_query(byte *buffer, db_state *state) byte *sql; db_result_msg msg; int i, num_param_values, ver = 0, - erl_type = 0, index = 0, size = 0, cols = 0; + erl_type = 0, index = 0, size = 0, cols = 0; long long_num_param_values; param_status param_status; diagnos diagnos; - param_array *params; + param_array *params; + SQLRETURN result; if (associated_result_set(state)) { clean_state(state); @@ -784,10 +785,16 @@ static db_result_msg db_param_query(byte *buffer, db_state *state) num_param_values, state); if(params != NULL) { - if(!sql_success(SQLExecDirect(statement_handle(state), - sql, SQL_NTS))) { - diagnos = get_diagnos(SQL_HANDLE_STMT, statement_handle(state)); - msg = encode_error_message(diagnos.error_msg); + + result = SQLExecDirect(statement_handle(state), sql, SQL_NTS); + if (!sql_success(result) || result == SQL_NO_DATA) { + diagnos = get_diagnos(SQL_HANDLE_STMT, statement_handle(state)); + } + /* SQL_NO_DATA and SQLSTATE 00000 indicate success for + updates/deletes that affect no rows */ + if(!sql_success(result) && + !(result == SQL_NO_DATA && !strcmp((char *)diagnos.sqlState, INFO))) { + msg = encode_error_message(diagnos.error_msg); } else { for (i = 0; i < param_status.params_processed; i++) { switch (param_status.param_status_array[i]) { @@ -2452,6 +2459,7 @@ static diagnos get_diagnos(SQLSMALLINT handleType, SQLHANDLE handle) int acc_errmsg_size; byte *current_errmsg_pos; SQLCHAR current_sql_state[SQL_STATE_SIZE]; + SQLRETURN result; diagnos.error_msg[0] = 0; @@ -2464,10 +2472,10 @@ static diagnos get_diagnos(SQLSMALLINT handleType, SQLHANDLE handle) /* Foreach diagnostic record in the current set of diagnostic records the error message is obtained */ for(record_nr = 1; ;record_nr++) { - if(SQLGetDiagRec(handleType, handle, record_nr, current_sql_state, + result = SQLGetDiagRec(handleType, handle, record_nr, current_sql_state, &nativeError, current_errmsg_pos, - (SQLSMALLINT)errmsg_buffer_size, &errmsg_size) - != SQL_SUCCESS) { + (SQLSMALLINT)errmsg_buffer_size, &errmsg_size); + if(result != SQL_SUCCESS && result != SQL_NO_DATA) { break; |