diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml
new file mode 100644
index 000000000..70a19c680
--- /dev/null
+++ b/.github/workflows/static-analysis.yml
@@ -0,0 +1,86 @@
+# JULEA - Flexible storage framework
+# Copyright (C) 2026 Jan Frase
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program. If not, see .
+
+name: static-analysis.yml
+on: [push, pull_request]
+defaults:
+ run:
+ shell: bash
+
+jobs:
+ # This job is responsible for running Codechecker.
+ code-checker:
+ name: Code checker
+ runs-on: ubuntu-24.04
+ timeout-minutes: 60
+ env:
+ JULEA_SPACK_DIR: /julea-dependencies
+
+
+ steps:
+ # First, checkout julea.
+ - name: Checkout
+ uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+ show-progress: false
+
+ # Get the dependencies.
+ - name: Install dependencies
+ run: |
+ sudo apt update
+ sudo apt --yes --no-install-recommends install meson ninja-build pkgconf libglib2.0-dev libbson-dev libfabric-dev libgdbm-dev liblmdb-dev libsqlite3-dev libleveldb-dev libmongoc-dev libmariadb-dev librocksdb-dev libfuse3-dev libopen-trace-format-dev librados-dev
+
+ # Then, generate compile_commands.json.
+ - name: Generate compile_commands.json
+ env:
+ CC: clang
+ run: |
+ . scripts/environment.sh
+ meson setup bld
+
+ # Install CodeChecker, gcc and cppcheck.
+ - name: Install CodeChecker
+ run: |
+ pip install codechecker
+ sudo apt install --yes --no-install-recommends cppcheck gcc
+
+ - name: Install Infer
+ run: |
+ VERSION=1.3.0; \
+ curl -sSL "https://github.com/facebook/infer/releases/download/v$VERSION/infer-linux-x86_64-v$VERSION.tar.xz" \
+ | sudo tar -C /opt -xJ && \
+ sudo ln -s "/opt/infer-linux-x86_64-v$VERSION/bin/infer" /usr/local/bin/infer
+
+ # Run the analysis.
+ - name: Run CodeChecker
+ # Since we already have ~100 warnings, i have disabled the sensitive checks for now.
+ # Should we ever run out of warnings, feel free to enable them again :D
+ run: CodeChecker analyze ./bld/compile_commands.json -o results --ctu || true #--enable sensitive
+
+ # Parse the results and generate an HTML report.
+ - name: Generate HTML report
+ run: |
+ # The parse command returns with exit code 2 if it finds any bugs.
+ # Thus, we ignore the exit code with "|| true", to avoid failing the workflow.
+ CodeChecker parse --export html --output ./reports_html ./results || true
+
+ # Lastly, upload the results to the CI.
+ - name: Upload results
+ uses: actions/upload-artifact@v7.0.1
+ with:
+ name: "CodeChecker Bug Reports"
+ path: ./reports_html
\ No newline at end of file
diff --git a/backend/db/mysql.c b/backend/db/mysql.c
index 7385fc533..1bf83f3af 100644
--- a/backend/db/mysql.c
+++ b/backend/db/mysql.c
@@ -74,7 +74,7 @@ j_sql_finalize(gpointer backend_db, void* _stmt, GError** error)
g_return_val_if_fail(backend_db != NULL, FALSE);
g_return_val_if_fail(_stmt != NULL, FALSE);
- if (wrapper->stmt && (status = mysql_stmt_close(wrapper->stmt)))
+ if (wrapper->stmt && (status = (unsigned char)mysql_stmt_close(wrapper->stmt)))
{
g_set_error(error, J_BACKEND_SQL_ERROR, J_BACKEND_SQL_ERROR_FINALIZE, "sql finalize failed error was (%d):'%s'", status, mysql_stmt_error(wrapper->stmt));
goto _error;
@@ -477,7 +477,7 @@ j_sql_step(gpointer backend_db, void* _stmt, gboolean* found, GError** error)
{
if (wrapper->param_count_in)
{
- if ((status = mysql_stmt_bind_param(wrapper->stmt, wrapper->bind_in)))
+ if ((status = (unsigned char)mysql_stmt_bind_param(wrapper->stmt, wrapper->bind_in)))
{
g_set_error(error, J_BACKEND_SQL_ERROR, J_BACKEND_SQL_ERROR_STEP, "sql step failed error was (%d):'%s'", status, mysql_stmt_error(wrapper->stmt));
goto _error;
@@ -486,7 +486,7 @@ j_sql_step(gpointer backend_db, void* _stmt, gboolean* found, GError** error)
if (wrapper->param_count_out)
{
- if ((status = mysql_stmt_bind_result(wrapper->stmt, wrapper->bind_out)))
+ if ((status = (unsigned char)mysql_stmt_bind_result(wrapper->stmt, wrapper->bind_out)))
{
g_set_error(error, J_BACKEND_SQL_ERROR, J_BACKEND_SQL_ERROR_STEP, "sql step failed error was (%d):'%s'", status, mysql_stmt_error(wrapper->stmt));
goto _error;
diff --git a/benchmark/benchmark.c b/benchmark/benchmark.c
index 7520fbd06..84f436a92 100644
--- a/benchmark/benchmark.c
+++ b/benchmark/benchmark.c
@@ -198,7 +198,7 @@ j_benchmark_run_one(BenchmarkRun* run)
{
g_autofree gchar* size = NULL;
- size = g_format_size((gdouble)run->bytes / elapsed_time);
+ size = g_format_size((guint64)((gdouble)run->bytes / elapsed_time));
g_print(" (%s/s)", size);
}
@@ -311,7 +311,12 @@ main(int argc, char** argv)
};
// Explicitly enable UTF-8 since functions such as g_format_size might return UTF-8 characters.
- setlocale(LC_ALL, "C.UTF-8");
+ g_autofree const char* local_result = setlocale(LC_ALL, "C.UTF-8");
+ if (local_result == NULL)
+ {
+ g_warning("Failed to set locale!");
+ return 1;
+ }
context = g_option_context_new(NULL);
g_option_context_add_main_entries(context, entries, NULL);
diff --git a/benchmark/db/common.c b/benchmark/db/common.c
index 9071b1df7..88516bba7 100644
--- a/benchmark/db/common.c
+++ b/benchmark/db/common.c
@@ -38,13 +38,13 @@
#define FLOAT_FACTOR (3.1415926)
static char*
-_benchmark_db_get_identifier(gint64 i)
+helper_fn_benchmark_db_get_identifier(gint64 i)
{
return g_strdup_printf("%x-benchmark-%ld", (guint32)(i * SIGNED_FACTOR % N_MODULUS), i);
}
static JDBSchema*
-_benchmark_db_prepare_scheme(gchar const* namespace, gboolean use_batch, gboolean use_index_all, gboolean use_index_single, JBatch* batch, JBatch* delete_batch)
+helper_fn_benchmark_db_prepare_scheme(gchar const* namespace, gboolean use_batch, gboolean use_index_all, gboolean use_index_single, JBatch* batch, JBatch* delete_batch)
{
gboolean ret;
g_autoptr(GError) b_s_error = NULL;
@@ -132,7 +132,7 @@ _benchmark_db_prepare_scheme(gchar const* namespace, gboolean use_batch, gboolea
}
static void
-_benchmark_db_insert(BenchmarkRun* run, JDBSchema* scheme, gchar const* namespace, gboolean use_batch, gboolean use_index_all, gboolean use_index_single, gboolean use_timer)
+helper_fn_benchmark_db_insert(BenchmarkRun* run, JDBSchema* scheme, gchar const* namespace, gboolean use_batch, gboolean use_index_all, gboolean use_index_single, gboolean use_timer)
{
gboolean ret;
g_autoptr(JBatch) delete_batch = NULL;
@@ -150,7 +150,7 @@ _benchmark_db_insert(BenchmarkRun* run, JDBSchema* scheme, gchar const* namespac
g_assert_null(scheme);
g_assert_nonnull(run);
- b_scheme = _benchmark_db_prepare_scheme(namespace, use_batch, use_index_all, use_index_single, batch, delete_batch);
+ b_scheme = helper_fn_benchmark_db_prepare_scheme(namespace, use_batch, use_index_all, use_index_single, batch, delete_batch);
g_assert_nonnull(b_scheme);
j_benchmark_timer_start(run);
@@ -172,7 +172,7 @@ _benchmark_db_insert(BenchmarkRun* run, JDBSchema* scheme, gchar const* namespac
gint64 i_signed = ((i * SIGNED_FACTOR) % CLASS_MODULUS) - CLASS_LIMIT;
guint64 i_usigned = ((i * USIGNED_FACTOR) % CLASS_MODULUS);
gdouble i_float = i_signed * FLOAT_FACTOR;
- g_autofree gchar* string = _benchmark_db_get_identifier(i);
+ g_autofree gchar* string = helper_fn_benchmark_db_get_identifier(i);
g_autoptr(JDBEntry) entry = j_db_entry_new(b_scheme, &b_s_error);
g_assert_null(b_s_error);
diff --git a/benchmark/db/entry.c b/benchmark/db/entry.c
index 5071f1301..1af335c97 100644
--- a/benchmark/db/entry.c
+++ b/benchmark/db/entry.c
@@ -30,7 +30,7 @@
#include "common.c"
static void
-_benchmark_db_delete(BenchmarkRun* run, gchar const* namespace, gboolean use_batch, gboolean use_index_all, gboolean use_index_single)
+helper_fn_benchmark_db_delete(BenchmarkRun* run, gchar const* namespace, gboolean use_batch, gboolean use_index_all, gboolean use_index_single)
{
gboolean ret;
g_autoptr(JBatch) delete_batch = NULL;
@@ -43,21 +43,21 @@ _benchmark_db_delete(BenchmarkRun* run, gchar const* namespace, gboolean use_bat
delete_batch = j_batch_new(semantics);
batch = j_batch_new(semantics);
- b_scheme = _benchmark_db_prepare_scheme(namespace, false, use_index_all, use_index_single, batch, delete_batch);
+ b_scheme = helper_fn_benchmark_db_prepare_scheme(namespace, false, use_index_all, use_index_single, batch, delete_batch);
g_assert_nonnull(b_scheme);
g_assert_nonnull(run);
while (j_benchmark_iterate(run))
{
- _benchmark_db_insert(NULL, b_scheme, NULL, true, false, false, false);
+ helper_fn_benchmark_db_insert(NULL, b_scheme, NULL, true, false, false, false);
j_benchmark_timer_start(run);
for (gint i = 0; i < ((use_index_all || use_index_single) ? N : (N / N_GET_DIVIDER)); i++)
{
g_autoptr(JDBEntry) entry = j_db_entry_new(b_scheme, &b_s_error);
- g_autofree gchar* string = _benchmark_db_get_identifier(i);
+ g_autofree gchar* string = helper_fn_benchmark_db_get_identifier(i);
g_autoptr(JDBSelector) selector = j_db_selector_new(b_scheme, J_DB_SELECTOR_MODE_AND, &b_s_error);
ret = j_db_selector_add_field(selector, "string", J_DB_SELECTOR_OPERATOR_EQ, string, 0, &b_s_error);
@@ -91,7 +91,7 @@ _benchmark_db_delete(BenchmarkRun* run, gchar const* namespace, gboolean use_bat
}
static void
-_benchmark_db_update(BenchmarkRun* run, gchar const* namespace, gboolean use_batch, gboolean use_index_all, gboolean use_index_single)
+helper_fn_benchmark_db_update(BenchmarkRun* run, gchar const* namespace, gboolean use_batch, gboolean use_index_all, gboolean use_index_single)
{
gboolean ret;
g_autoptr(JBatch) delete_batch = NULL;
@@ -104,12 +104,12 @@ _benchmark_db_update(BenchmarkRun* run, gchar const* namespace, gboolean use_bat
delete_batch = j_batch_new(semantics);
batch = j_batch_new(semantics);
- b_scheme = _benchmark_db_prepare_scheme(namespace, false, use_index_all, use_index_single, batch, delete_batch);
+ b_scheme = helper_fn_benchmark_db_prepare_scheme(namespace, false, use_index_all, use_index_single, batch, delete_batch);
g_assert_nonnull(b_scheme);
g_assert_nonnull(run);
- _benchmark_db_insert(NULL, b_scheme, NULL, true, false, false, false);
+ helper_fn_benchmark_db_insert(NULL, b_scheme, NULL, true, false, false, false);
j_benchmark_timer_start(run);
@@ -120,7 +120,7 @@ _benchmark_db_update(BenchmarkRun* run, gchar const* namespace, gboolean use_bat
gint64 i_signed = (((i + N_PRIME) * SIGNED_FACTOR) % CLASS_MODULUS) - CLASS_LIMIT;
g_autoptr(JDBSelector) selector = j_db_selector_new(b_scheme, J_DB_SELECTOR_MODE_AND, &b_s_error);
g_autoptr(JDBEntry) entry = j_db_entry_new(b_scheme, &b_s_error);
- g_autofree gchar* string = _benchmark_db_get_identifier(i);
+ g_autofree gchar* string = helper_fn_benchmark_db_get_identifier(i);
g_assert_null(b_s_error);
@@ -161,145 +161,145 @@ _benchmark_db_update(BenchmarkRun* run, gchar const* namespace, gboolean use_bat
static void
benchmark_db_insert(BenchmarkRun* run)
{
- _benchmark_db_insert(run, NULL, "benchmark_insert", false, false, false, true);
+ helper_fn_benchmark_db_insert(run, NULL, "benchmark_insert", false, false, false, true);
}
static void
benchmark_db_insert_batch(BenchmarkRun* run)
{
- _benchmark_db_insert(run, NULL, "benchmark_insert_batch", true, false, false, true);
+ helper_fn_benchmark_db_insert(run, NULL, "benchmark_insert_batch", true, false, false, true);
}
static void
benchmark_db_insert_index_single(BenchmarkRun* run)
{
- _benchmark_db_insert(run, NULL, "benchmark_insert_index_single", false, false, true, true);
+ helper_fn_benchmark_db_insert(run, NULL, "benchmark_insert_index_single", false, false, true, true);
}
static void
benchmark_db_insert_batch_index_single(BenchmarkRun* run)
{
- _benchmark_db_insert(run, NULL, "benchmark_insert_batch_index_single", true, false, true, true);
+ helper_fn_benchmark_db_insert(run, NULL, "benchmark_insert_batch_index_single", true, false, true, true);
}
static void
benchmark_db_insert_index_all(BenchmarkRun* run)
{
- _benchmark_db_insert(run, NULL, "benchmark_insert_index_all", false, true, false, true);
+ helper_fn_benchmark_db_insert(run, NULL, "benchmark_insert_index_all", false, true, false, true);
}
static void
benchmark_db_insert_batch_index_all(BenchmarkRun* run)
{
- _benchmark_db_insert(run, NULL, "benchmark_insert_batch_index_all", true, true, false, true);
+ helper_fn_benchmark_db_insert(run, NULL, "benchmark_insert_batch_index_all", true, true, false, true);
}
static void
benchmark_db_insert_index_mixed(BenchmarkRun* run)
{
- _benchmark_db_insert(run, NULL, "benchmark_insert_index_mixed", false, true, true, true);
+ helper_fn_benchmark_db_insert(run, NULL, "benchmark_insert_index_mixed", false, true, true, true);
}
static void
benchmark_db_insert_batch_index_mixed(BenchmarkRun* run)
{
- _benchmark_db_insert(run, NULL, "benchmark_insert_batch_index_mixed", true, true, true, true);
+ helper_fn_benchmark_db_insert(run, NULL, "benchmark_insert_batch_index_mixed", true, true, true, true);
}
static void
benchmark_db_delete(BenchmarkRun* run)
{
- _benchmark_db_delete(run, "benchmark_delete", false, false, false);
+ helper_fn_benchmark_db_delete(run, "benchmark_delete", false, false, false);
}
static void
benchmark_db_delete_batch(BenchmarkRun* run)
{
- _benchmark_db_delete(run, "benchmark_delete_batch", true, false, false);
+ helper_fn_benchmark_db_delete(run, "benchmark_delete_batch", true, false, false);
}
static void
benchmark_db_delete_index_single(BenchmarkRun* run)
{
- _benchmark_db_delete(run, "benchmark_delete_index_single", false, false, true);
+ helper_fn_benchmark_db_delete(run, "benchmark_delete_index_single", false, false, true);
}
static void
benchmark_db_delete_batch_index_single(BenchmarkRun* run)
{
- _benchmark_db_delete(run, "benchmark_delete_batch_index_single", true, false, true);
+ helper_fn_benchmark_db_delete(run, "benchmark_delete_batch_index_single", true, false, true);
}
static void
benchmark_db_delete_index_all(BenchmarkRun* run)
{
- _benchmark_db_delete(run, "benchmark_delete_index_all", false, true, false);
+ helper_fn_benchmark_db_delete(run, "benchmark_delete_index_all", false, true, false);
}
static void
benchmark_db_delete_batch_index_all(BenchmarkRun* run)
{
- _benchmark_db_delete(run, "benchmark_delete_batch_index_all", true, true, false);
+ helper_fn_benchmark_db_delete(run, "benchmark_delete_batch_index_all", true, true, false);
}
static void
benchmark_db_delete_index_mixed(BenchmarkRun* run)
{
- _benchmark_db_delete(run, "benchmark_delete_index_mixed", false, true, true);
+ helper_fn_benchmark_db_delete(run, "benchmark_delete_index_mixed", false, true, true);
}
static void
benchmark_db_delete_batch_index_mixed(BenchmarkRun* run)
{
- _benchmark_db_delete(run, "benchmark_delete_batch_index_mixed", true, true, true);
+ helper_fn_benchmark_db_delete(run, "benchmark_delete_batch_index_mixed", true, true, true);
}
static void
benchmark_db_update(BenchmarkRun* run)
{
- _benchmark_db_update(run, "benchmark_update", false, false, false);
+ helper_fn_benchmark_db_update(run, "benchmark_update", false, false, false);
}
static void
benchmark_db_update_batch(BenchmarkRun* run)
{
- _benchmark_db_update(run, "benchmark_update_batch", true, false, false);
+ helper_fn_benchmark_db_update(run, "benchmark_update_batch", true, false, false);
}
static void
benchmark_db_update_index_single(BenchmarkRun* run)
{
- _benchmark_db_update(run, "benchmark_update_index_single", false, false, true);
+ helper_fn_benchmark_db_update(run, "benchmark_update_index_single", false, false, true);
}
static void
benchmark_db_update_batch_index_single(BenchmarkRun* run)
{
- _benchmark_db_update(run, "benchmark_update_batch_index_single", true, false, true);
+ helper_fn_benchmark_db_update(run, "benchmark_update_batch_index_single", true, false, true);
}
static void
benchmark_db_update_index_all(BenchmarkRun* run)
{
- _benchmark_db_update(run, "benchmark_update_index_all", false, true, false);
+ helper_fn_benchmark_db_update(run, "benchmark_update_index_all", false, true, false);
}
static void
benchmark_db_update_batch_index_all(BenchmarkRun* run)
{
- _benchmark_db_update(run, "benchmark_update_batch_index_all", true, true, false);
+ helper_fn_benchmark_db_update(run, "benchmark_update_batch_index_all", true, true, false);
}
static void
benchmark_db_update_index_mixed(BenchmarkRun* run)
{
- _benchmark_db_update(run, "benchmark_update_index_mixed", false, true, true);
+ helper_fn_benchmark_db_update(run, "benchmark_update_index_mixed", false, true, true);
}
static void
benchmark_db_update_batch_index_mixed(BenchmarkRun* run)
{
- _benchmark_db_update(run, "benchmark_update_batch_index_mixed", true, true, true);
+ helper_fn_benchmark_db_update(run, "benchmark_update_batch_index_mixed", true, true, true);
}
void
diff --git a/benchmark/db/iterator.c b/benchmark/db/iterator.c
index d52450435..a73234241 100644
--- a/benchmark/db/iterator.c
+++ b/benchmark/db/iterator.c
@@ -30,7 +30,7 @@
#include "common.c"
static void
-_benchmark_db_get_simple(BenchmarkRun* run, gchar const* namespace, gboolean use_index_all, gboolean use_index_single)
+helper_fn_benchmark_db_get_simple(BenchmarkRun* run, gchar const* namespace, gboolean use_index_all, gboolean use_index_single)
{
gboolean ret;
g_autoptr(JBatch) delete_batch = NULL;
@@ -43,12 +43,12 @@ _benchmark_db_get_simple(BenchmarkRun* run, gchar const* namespace, gboolean use
delete_batch = j_batch_new(semantics);
batch = j_batch_new(semantics);
- b_scheme = _benchmark_db_prepare_scheme(namespace, false, use_index_all, use_index_single, batch, delete_batch);
+ b_scheme = helper_fn_benchmark_db_prepare_scheme(namespace, false, use_index_all, use_index_single, batch, delete_batch);
g_assert_nonnull(b_scheme);
g_assert_nonnull(run);
- _benchmark_db_insert(NULL, b_scheme, NULL, true, false, false, false);
+ helper_fn_benchmark_db_insert(NULL, b_scheme, NULL, true, false, false, false);
j_benchmark_timer_start(run);
@@ -60,7 +60,7 @@ _benchmark_db_get_simple(BenchmarkRun* run, gchar const* namespace, gboolean use
g_autofree gpointer field_value;
guint64 field_length;
g_autoptr(JDBIterator) iterator;
- g_autofree gchar* string = _benchmark_db_get_identifier(i);
+ g_autofree gchar* string = helper_fn_benchmark_db_get_identifier(i);
g_autoptr(JDBSelector) selector = j_db_selector_new(b_scheme, J_DB_SELECTOR_MODE_AND, &b_s_error);
ret = j_db_selector_add_field(selector, "string", J_DB_SELECTOR_OPERATOR_EQ, string, 0, &b_s_error);
@@ -90,7 +90,7 @@ _benchmark_db_get_simple(BenchmarkRun* run, gchar const* namespace, gboolean use
}
static void
-_benchmark_db_get_range(BenchmarkRun* run, gchar const* namespace, gboolean use_index_all, gboolean use_index_single)
+helper_fn_benchmark_db_get_range(BenchmarkRun* run, gchar const* namespace, gboolean use_index_all, gboolean use_index_single)
{
gboolean ret;
g_autoptr(JBatch) delete_batch = NULL;
@@ -103,12 +103,12 @@ _benchmark_db_get_range(BenchmarkRun* run, gchar const* namespace, gboolean use_
delete_batch = j_batch_new(semantics);
batch = j_batch_new(semantics);
- b_scheme = _benchmark_db_prepare_scheme(namespace, false, use_index_all, use_index_single, batch, delete_batch);
+ b_scheme = helper_fn_benchmark_db_prepare_scheme(namespace, false, use_index_all, use_index_single, batch, delete_batch);
g_assert_nonnull(b_scheme);
g_assert_nonnull(run);
- _benchmark_db_insert(NULL, b_scheme, NULL, true, false, false, false);
+ helper_fn_benchmark_db_insert(NULL, b_scheme, NULL, true, false, false, false);
j_benchmark_timer_start(run);
@@ -159,49 +159,49 @@ _benchmark_db_get_range(BenchmarkRun* run, gchar const* namespace, gboolean use_
static void
benchmark_db_get_simple(BenchmarkRun* run)
{
- _benchmark_db_get_simple(run, "benchmark_get_simple", false, false);
+ helper_fn_benchmark_db_get_simple(run, "benchmark_get_simple", false, false);
}
static void
benchmark_db_get_simple_index_single(BenchmarkRun* run)
{
- _benchmark_db_get_simple(run, "benchmark_get_simple_index_single", false, true);
+ helper_fn_benchmark_db_get_simple(run, "benchmark_get_simple_index_single", false, true);
}
static void
benchmark_db_get_simple_index_all(BenchmarkRun* run)
{
- _benchmark_db_get_simple(run, "benchmark_get_simple_index_all", true, false);
+ helper_fn_benchmark_db_get_simple(run, "benchmark_get_simple_index_all", true, false);
}
static void
benchmark_db_get_simple_index_mixed(BenchmarkRun* run)
{
- _benchmark_db_get_simple(run, "benchmark_get_simple_index_mixed", true, true);
+ helper_fn_benchmark_db_get_simple(run, "benchmark_get_simple_index_mixed", true, true);
}
static void
benchmark_db_get_range(BenchmarkRun* run)
{
- _benchmark_db_get_range(run, "benchmark_get_range", false, false);
+ helper_fn_benchmark_db_get_range(run, "benchmark_get_range", false, false);
}
static void
benchmark_db_get_range_index_single(BenchmarkRun* run)
{
- _benchmark_db_get_range(run, "benchmark_get_range_index_single", false, true);
+ helper_fn_benchmark_db_get_range(run, "benchmark_get_range_index_single", false, true);
}
static void
benchmark_db_get_range_index_all(BenchmarkRun* run)
{
- _benchmark_db_get_range(run, "benchmark_get_range_index_all", true, false);
+ helper_fn_benchmark_db_get_range(run, "benchmark_get_range_index_all", true, false);
}
static void
benchmark_db_get_range_index_mixed(BenchmarkRun* run)
{
- _benchmark_db_get_range(run, "benchmark_get_range_index_mixed", true, true);
+ helper_fn_benchmark_db_get_range(run, "benchmark_get_range_index_mixed", true, true);
}
void
diff --git a/benchmark/db/schema.c b/benchmark/db/schema.c
index e2f671392..5eec38658 100644
--- a/benchmark/db/schema.c
+++ b/benchmark/db/schema.c
@@ -26,7 +26,7 @@
#include "benchmark.h"
static void
-_benchmark_db_schema_create(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_db_schema_create(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 100;
@@ -90,17 +90,17 @@ _benchmark_db_schema_create(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_db_schema_create(BenchmarkRun* run)
{
- _benchmark_db_schema_create(run, FALSE);
+ helper_fn_benchmark_db_schema_create(run, FALSE);
}
static void
benchmark_db_schema_create_batch(BenchmarkRun* run)
{
- _benchmark_db_schema_create(run, TRUE);
+ helper_fn_benchmark_db_schema_create(run, TRUE);
}
static void
-_benchmark_db_schema_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_db_schema_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 100;
@@ -172,13 +172,13 @@ _benchmark_db_schema_delete(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_db_schema_delete(BenchmarkRun* run)
{
- _benchmark_db_schema_delete(run, FALSE);
+ helper_fn_benchmark_db_schema_delete(run, FALSE);
}
static void
benchmark_db_schema_delete_batch(BenchmarkRun* run)
{
- _benchmark_db_schema_delete(run, TRUE);
+ helper_fn_benchmark_db_schema_delete(run, TRUE);
}
void
diff --git a/benchmark/hdf5/hdf.c b/benchmark/hdf5/hdf.c
index 47f4e7683..c466c2489 100644
--- a/benchmark/hdf5/hdf.c
+++ b/benchmark/hdf5/hdf.c
@@ -335,7 +335,7 @@ benchmark_hdf_attribute_read(BenchmarkRun* run)
}
static void
-_benchmark_hdf_dataset_create(BenchmarkRun* run, guint dimensions)
+helper_fn_benchmark_hdf_dataset_create(BenchmarkRun* run, guint dimensions)
{
guint const n = 1000;
@@ -376,17 +376,17 @@ _benchmark_hdf_dataset_create(BenchmarkRun* run, guint dimensions)
static void
benchmark_hdf_dataset_create_4m(BenchmarkRun* run)
{
- _benchmark_hdf_dataset_create(run, 2);
+ helper_fn_benchmark_hdf_dataset_create(run, 2);
}
static void
benchmark_hdf_dataset_create_4k(BenchmarkRun* run)
{
- _benchmark_hdf_dataset_create(run, 1);
+ helper_fn_benchmark_hdf_dataset_create(run, 1);
}
static void
-_benchmark_hdf_dataset_open(BenchmarkRun* run, guint dimensions)
+helper_fn_benchmark_hdf_dataset_open(BenchmarkRun* run, guint dimensions)
{
guint const n = 1000;
@@ -438,17 +438,17 @@ _benchmark_hdf_dataset_open(BenchmarkRun* run, guint dimensions)
static void
benchmark_hdf_dataset_open_4m(BenchmarkRun* run)
{
- _benchmark_hdf_dataset_open(run, 2);
+ helper_fn_benchmark_hdf_dataset_open(run, 2);
}
static void
benchmark_hdf_dataset_open_4k(BenchmarkRun* run)
{
- _benchmark_hdf_dataset_open(run, 1);
+ helper_fn_benchmark_hdf_dataset_open(run, 1);
}
static void
-_benchmark_hdf_dataset_write(BenchmarkRun* run, guint dimensions)
+helper_fn_benchmark_hdf_dataset_write(BenchmarkRun* run, guint dimensions)
{
guint const n = 100;
@@ -493,17 +493,17 @@ _benchmark_hdf_dataset_write(BenchmarkRun* run, guint dimensions)
static void
benchmark_hdf_dataset_write_4m(BenchmarkRun* run)
{
- _benchmark_hdf_dataset_write(run, 2);
+ helper_fn_benchmark_hdf_dataset_write(run, 2);
}
static void
benchmark_hdf_dataset_write_4k(BenchmarkRun* run)
{
- _benchmark_hdf_dataset_write(run, 1);
+ helper_fn_benchmark_hdf_dataset_write(run, 1);
}
static void
-_benchmark_hdf_dataset_read(BenchmarkRun* run, guint dimensions)
+helper_fn_benchmark_hdf_dataset_read(BenchmarkRun* run, guint dimensions)
{
guint const n = 100;
@@ -560,13 +560,13 @@ _benchmark_hdf_dataset_read(BenchmarkRun* run, guint dimensions)
static void
benchmark_hdf_dataset_read_4m(BenchmarkRun* run)
{
- _benchmark_hdf_dataset_read(run, 2);
+ helper_fn_benchmark_hdf_dataset_read(run, 2);
}
static void
benchmark_hdf_dataset_read_4k(BenchmarkRun* run)
{
- _benchmark_hdf_dataset_read(run, 1);
+ helper_fn_benchmark_hdf_dataset_read(run, 1);
}
static void
diff --git a/benchmark/item/collection.c b/benchmark/item/collection.c
index 5b711f232..84bd9483d 100644
--- a/benchmark/item/collection.c
+++ b/benchmark/item/collection.c
@@ -26,7 +26,7 @@
#include "benchmark.h"
static void
-_benchmark_collection_create(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_collection_create(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -78,17 +78,17 @@ _benchmark_collection_create(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_collection_create(BenchmarkRun* run)
{
- _benchmark_collection_create(run, FALSE);
+ helper_fn_benchmark_collection_create(run, FALSE);
}
static void
benchmark_collection_create_batch(BenchmarkRun* run)
{
- _benchmark_collection_create(run, TRUE);
+ helper_fn_benchmark_collection_create(run, TRUE);
}
static void
-_benchmark_collection_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_collection_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -103,11 +103,10 @@ _benchmark_collection_delete(BenchmarkRun* run, gboolean use_batch)
{
for (guint i = 0; i < n; i++)
{
- g_autoptr(JCollection) collection = NULL;
- g_autofree gchar* name = NULL;
+ g_autofree const gchar* name = NULL;
name = g_strdup_printf("benchmark-%d", i);
- collection = j_collection_create(name, batch);
+ j_collection_create(name, batch);
}
ret = j_batch_execute(batch);
@@ -149,13 +148,13 @@ _benchmark_collection_delete(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_collection_delete(BenchmarkRun* run)
{
- _benchmark_collection_delete(run, FALSE);
+ helper_fn_benchmark_collection_delete(run, FALSE);
}
static void
benchmark_collection_delete_batch(BenchmarkRun* run)
{
- _benchmark_collection_delete(run, TRUE);
+ helper_fn_benchmark_collection_delete(run, TRUE);
}
static void
@@ -200,7 +199,7 @@ benchmark_collection_delete_batch_without_get(BenchmarkRun* run)
}
static void
-_benchmark_collection_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_collection_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -246,13 +245,13 @@ _benchmark_collection_unordered_create_delete(BenchmarkRun* run, gboolean use_ba
static void
benchmark_collection_unordered_create_delete(BenchmarkRun* run)
{
- _benchmark_collection_unordered_create_delete(run, FALSE);
+ helper_fn_benchmark_collection_unordered_create_delete(run, FALSE);
}
static void
benchmark_collection_unordered_create_delete_batch(BenchmarkRun* run)
{
- _benchmark_collection_unordered_create_delete(run, TRUE);
+ helper_fn_benchmark_collection_unordered_create_delete(run, TRUE);
}
void
diff --git a/benchmark/item/item.c b/benchmark/item/item.c
index 3292e89ad..3ef3755f1 100644
--- a/benchmark/item/item.c
+++ b/benchmark/item/item.c
@@ -28,7 +28,7 @@
#include "benchmark.h"
static void
-_benchmark_item_create(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_item_create(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -89,17 +89,17 @@ _benchmark_item_create(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_item_create(BenchmarkRun* run)
{
- _benchmark_item_create(run, FALSE);
+ helper_fn_benchmark_item_create(run, FALSE);
}
static void
benchmark_item_create_batch(BenchmarkRun* run)
{
- _benchmark_item_create(run, TRUE);
+ helper_fn_benchmark_item_create(run, TRUE);
}
static void
-_benchmark_item_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_item_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -121,11 +121,10 @@ _benchmark_item_delete(BenchmarkRun* run, gboolean use_batch)
{
for (guint i = 0; i < n; i++)
{
- g_autoptr(JItem) item = NULL;
- g_autofree gchar* name = NULL;
+ g_autofree const gchar* name = NULL;
name = g_strdup_printf("benchmark-%d", i);
- item = j_item_create(collection, name, NULL, batch);
+ j_item_create(collection, name, NULL, batch);
}
ret = j_batch_execute(batch);
@@ -171,13 +170,13 @@ _benchmark_item_delete(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_item_delete(BenchmarkRun* run)
{
- _benchmark_item_delete(run, FALSE);
+ helper_fn_benchmark_item_delete(run, FALSE);
}
static void
benchmark_item_delete_batch(BenchmarkRun* run)
{
- _benchmark_item_delete(run, TRUE);
+ helper_fn_benchmark_item_delete(run, TRUE);
}
static void
@@ -231,7 +230,7 @@ benchmark_item_delete_batch_without_get(BenchmarkRun* run)
}
static void
-_benchmark_item_get_status(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_item_get_status(BenchmarkRun* run, gboolean use_batch)
{
guint const n = (use_batch) ? 10000 : 1000;
@@ -290,17 +289,17 @@ _benchmark_item_get_status(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_item_get_status(BenchmarkRun* run)
{
- _benchmark_item_get_status(run, FALSE);
+ helper_fn_benchmark_item_get_status(run, FALSE);
}
static void
benchmark_item_get_status_batch(BenchmarkRun* run)
{
- _benchmark_item_get_status(run, TRUE);
+ helper_fn_benchmark_item_get_status(run, TRUE);
}
static void
-_benchmark_item_read(BenchmarkRun* run, gboolean use_batch, guint block_size)
+helper_fn_benchmark_item_read(BenchmarkRun* run, gboolean use_batch, guint block_size)
{
guint const n = (use_batch) ? 10000 : 1000;
@@ -367,17 +366,17 @@ _benchmark_item_read(BenchmarkRun* run, gboolean use_batch, guint block_size)
static void
benchmark_item_read(BenchmarkRun* run)
{
- _benchmark_item_read(run, FALSE, 4 * 1024);
+ helper_fn_benchmark_item_read(run, FALSE, 4 * 1024);
}
static void
benchmark_item_read_batch(BenchmarkRun* run)
{
- _benchmark_item_read(run, TRUE, 4 * 1024);
+ helper_fn_benchmark_item_read(run, TRUE, 4 * 1024);
}
static void
-_benchmark_item_write(BenchmarkRun* run, gboolean use_batch, guint block_size)
+helper_fn_benchmark_item_write(BenchmarkRun* run, gboolean use_batch, guint block_size)
{
guint const n = (use_batch) ? 10000 : 1000;
@@ -437,17 +436,17 @@ _benchmark_item_write(BenchmarkRun* run, gboolean use_batch, guint block_size)
static void
benchmark_item_write(BenchmarkRun* run)
{
- _benchmark_item_write(run, FALSE, 4 * 1024);
+ helper_fn_benchmark_item_write(run, FALSE, 4 * 1024);
}
static void
benchmark_item_write_batch(BenchmarkRun* run)
{
- _benchmark_item_write(run, TRUE, 4 * 1024);
+ helper_fn_benchmark_item_write(run, TRUE, 4 * 1024);
}
static void
-_benchmark_item_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_item_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -502,13 +501,13 @@ _benchmark_item_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_item_unordered_create_delete(BenchmarkRun* run)
{
- _benchmark_item_unordered_create_delete(run, FALSE);
+ helper_fn_benchmark_item_unordered_create_delete(run, FALSE);
}
static void
benchmark_item_unordered_create_delete_batch(BenchmarkRun* run)
{
- _benchmark_item_unordered_create_delete(run, TRUE);
+ helper_fn_benchmark_item_unordered_create_delete(run, TRUE);
}
void
diff --git a/benchmark/kv/kv.c b/benchmark/kv/kv.c
index 16cca78da..12dd23200 100644
--- a/benchmark/kv/kv.c
+++ b/benchmark/kv/kv.c
@@ -28,7 +28,7 @@
#include "benchmark.h"
static void
-_benchmark_kv_put(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_kv_put(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -81,17 +81,17 @@ _benchmark_kv_put(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_kv_put(BenchmarkRun* run)
{
- _benchmark_kv_put(run, FALSE);
+ helper_fn_benchmark_kv_put(run, FALSE);
}
static void
benchmark_kv_put_batch(BenchmarkRun* run)
{
- _benchmark_kv_put(run, TRUE);
+ helper_fn_benchmark_kv_put(run, TRUE);
}
static void
-_benchmark_kv_get_callback(gpointer value, guint32 len, gpointer data)
+helper_fn_benchmark_kv_get_callback(gpointer value, guint32 len, gpointer data)
{
(void)len;
(void)data;
@@ -100,7 +100,7 @@ _benchmark_kv_get_callback(gpointer value, guint32 len, gpointer data)
}
static void
-_benchmark_kv_get(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_kv_get(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -139,7 +139,7 @@ _benchmark_kv_get(BenchmarkRun* run, gboolean use_batch)
name = g_strdup_printf("benchmark-%d", i);
object = j_kv_new("benchmark", name);
- j_kv_get_callback(object, _benchmark_kv_get_callback, NULL, batch);
+ j_kv_get_callback(object, helper_fn_benchmark_kv_get_callback, NULL, batch);
if (!use_batch)
{
@@ -166,17 +166,17 @@ _benchmark_kv_get(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_kv_get(BenchmarkRun* run)
{
- _benchmark_kv_get(run, FALSE);
+ helper_fn_benchmark_kv_get(run, FALSE);
}
static void
benchmark_kv_get_batch(BenchmarkRun* run)
{
- _benchmark_kv_get(run, TRUE);
+ helper_fn_benchmark_kv_get(run, TRUE);
}
static void
-_benchmark_kv_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_kv_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -236,17 +236,17 @@ _benchmark_kv_delete(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_kv_delete(BenchmarkRun* run)
{
- _benchmark_kv_delete(run, FALSE);
+ helper_fn_benchmark_kv_delete(run, FALSE);
}
static void
benchmark_kv_delete_batch(BenchmarkRun* run)
{
- _benchmark_kv_delete(run, TRUE);
+ helper_fn_benchmark_kv_delete(run, TRUE);
}
static void
-_benchmark_kv_unordered_put_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_kv_unordered_put_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -293,13 +293,13 @@ _benchmark_kv_unordered_put_delete(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_kv_unordered_put_delete(BenchmarkRun* run)
{
- _benchmark_kv_unordered_put_delete(run, FALSE);
+ helper_fn_benchmark_kv_unordered_put_delete(run, FALSE);
}
static void
benchmark_kv_unordered_put_delete_batch(BenchmarkRun* run)
{
- _benchmark_kv_unordered_put_delete(run, TRUE);
+ helper_fn_benchmark_kv_unordered_put_delete(run, TRUE);
}
void
diff --git a/benchmark/message.c b/benchmark/message.c
index 13fe48a1d..e22dc6bbb 100644
--- a/benchmark/message.c
+++ b/benchmark/message.c
@@ -27,7 +27,7 @@
#include "benchmark.h"
static void
-_benchmark_message_new(BenchmarkRun* run, gboolean append)
+helper_benchmark_message_new(BenchmarkRun* run, gboolean append)
{
guint const n = 100000;
guint const m = 100;
@@ -62,17 +62,17 @@ _benchmark_message_new(BenchmarkRun* run, gboolean append)
static void
benchmark_message_new(BenchmarkRun* run)
{
- _benchmark_message_new(run, FALSE);
+ helper_benchmark_message_new(run, FALSE);
}
static void
benchmark_message_new_append(BenchmarkRun* run)
{
- _benchmark_message_new(run, TRUE);
+ helper_benchmark_message_new(run, TRUE);
}
static void
-_benchmark_message_add_operation(BenchmarkRun* run, gboolean large)
+helper_benchmark_message_add_operation(BenchmarkRun* run, gboolean large)
{
guint const n = (large) ? 100 : 10000;
guint const m = (large) ? 10000 : 100;
@@ -105,13 +105,13 @@ _benchmark_message_add_operation(BenchmarkRun* run, gboolean large)
static void
benchmark_message_add_operation_small(BenchmarkRun* run)
{
- _benchmark_message_add_operation(run, FALSE);
+ helper_benchmark_message_add_operation(run, FALSE);
}
static void
benchmark_message_add_operation_large(BenchmarkRun* run)
{
- _benchmark_message_add_operation(run, TRUE);
+ helper_benchmark_message_add_operation(run, TRUE);
}
void
diff --git a/benchmark/object/distributed-object.c b/benchmark/object/distributed-object.c
index a716c071d..4c8dd582d 100644
--- a/benchmark/object/distributed-object.c
+++ b/benchmark/object/distributed-object.c
@@ -28,7 +28,7 @@
#include "benchmark.h"
static void
-_benchmark_distributed_object_create(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_distributed_object_create(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -83,17 +83,17 @@ _benchmark_distributed_object_create(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_distributed_object_create(BenchmarkRun* run)
{
- _benchmark_distributed_object_create(run, FALSE);
+ helper_fn_benchmark_distributed_object_create(run, FALSE);
}
static void
benchmark_distributed_object_create_batch(BenchmarkRun* run)
{
- _benchmark_distributed_object_create(run, TRUE);
+ helper_fn_benchmark_distributed_object_create(run, TRUE);
}
static void
-_benchmark_distributed_object_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_distributed_object_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -155,17 +155,17 @@ _benchmark_distributed_object_delete(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_distributed_object_delete(BenchmarkRun* run)
{
- _benchmark_distributed_object_delete(run, FALSE);
+ helper_fn_benchmark_distributed_object_delete(run, FALSE);
}
static void
benchmark_distributed_object_delete_batch(BenchmarkRun* run)
{
- _benchmark_distributed_object_delete(run, TRUE);
+ helper_fn_benchmark_distributed_object_delete(run, TRUE);
}
static void
-_benchmark_distributed_object_status(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_distributed_object_status(BenchmarkRun* run, gboolean use_batch)
{
guint const n = (use_batch) ? 10000 : 1000;
@@ -225,17 +225,17 @@ _benchmark_distributed_object_status(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_distributed_object_status(BenchmarkRun* run)
{
- _benchmark_distributed_object_status(run, FALSE);
+ helper_fn_benchmark_distributed_object_status(run, FALSE);
}
static void
benchmark_distributed_object_status_batch(BenchmarkRun* run)
{
- _benchmark_distributed_object_status(run, TRUE);
+ helper_fn_benchmark_distributed_object_status(run, TRUE);
}
static void
-_benchmark_distributed_object_read(BenchmarkRun* run, gboolean use_batch, guint block_size)
+helper_fn_benchmark_distributed_object_read(BenchmarkRun* run, gboolean use_batch, guint block_size)
{
guint const n = (use_batch) ? 10000 : 1000;
@@ -302,17 +302,17 @@ _benchmark_distributed_object_read(BenchmarkRun* run, gboolean use_batch, guint
static void
benchmark_distributed_object_read(BenchmarkRun* run)
{
- _benchmark_distributed_object_read(run, FALSE, 4 * 1024);
+ helper_fn_benchmark_distributed_object_read(run, FALSE, 4 * 1024);
}
static void
benchmark_distributed_object_read_batch(BenchmarkRun* run)
{
- _benchmark_distributed_object_read(run, TRUE, 4 * 1024);
+ helper_fn_benchmark_distributed_object_read(run, TRUE, 4 * 1024);
}
static void
-_benchmark_distributed_object_write(BenchmarkRun* run, gboolean use_batch, guint block_size)
+helper_fn_benchmark_distributed_object_write(BenchmarkRun* run, gboolean use_batch, guint block_size)
{
guint const n = (use_batch) ? 10000 : 1000;
@@ -372,17 +372,17 @@ _benchmark_distributed_object_write(BenchmarkRun* run, gboolean use_batch, guint
static void
benchmark_distributed_object_write(BenchmarkRun* run)
{
- _benchmark_distributed_object_write(run, FALSE, 4 * 1024);
+ helper_fn_benchmark_distributed_object_write(run, FALSE, 4 * 1024);
}
static void
benchmark_distributed_object_write_batch(BenchmarkRun* run)
{
- _benchmark_distributed_object_write(run, TRUE, 4 * 1024);
+ helper_fn_benchmark_distributed_object_write(run, TRUE, 4 * 1024);
}
static void
-_benchmark_distributed_object_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_distributed_object_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -431,13 +431,13 @@ _benchmark_distributed_object_unordered_create_delete(BenchmarkRun* run, gboolea
static void
benchmark_distributed_object_unordered_create_delete(BenchmarkRun* run)
{
- _benchmark_distributed_object_unordered_create_delete(run, FALSE);
+ helper_fn_benchmark_distributed_object_unordered_create_delete(run, FALSE);
}
static void
benchmark_distributed_object_unordered_create_delete_batch(BenchmarkRun* run)
{
- _benchmark_distributed_object_unordered_create_delete(run, TRUE);
+ helper_fn_benchmark_distributed_object_unordered_create_delete(run, TRUE);
}
void
diff --git a/benchmark/object/object.c b/benchmark/object/object.c
index 032318b7e..8e2e570f5 100644
--- a/benchmark/object/object.c
+++ b/benchmark/object/object.c
@@ -28,7 +28,7 @@
#include "benchmark.h"
static void
-_benchmark_object_create(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_object_create(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -81,17 +81,17 @@ _benchmark_object_create(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_object_create(BenchmarkRun* run)
{
- _benchmark_object_create(run, FALSE);
+ helper_fn_benchmark_object_create(run, FALSE);
}
static void
benchmark_object_create_batch(BenchmarkRun* run)
{
- _benchmark_object_create(run, TRUE);
+ helper_fn_benchmark_object_create(run, TRUE);
}
static void
-_benchmark_object_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_object_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -151,17 +151,17 @@ _benchmark_object_delete(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_object_delete(BenchmarkRun* run)
{
- _benchmark_object_delete(run, FALSE);
+ helper_fn_benchmark_object_delete(run, FALSE);
}
static void
benchmark_object_delete_batch(BenchmarkRun* run)
{
- _benchmark_object_delete(run, TRUE);
+ helper_fn_benchmark_object_delete(run, TRUE);
}
static void
-_benchmark_object_status(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_object_status(BenchmarkRun* run, gboolean use_batch)
{
guint const n = (use_batch) ? 10000 : 1000;
@@ -219,17 +219,17 @@ _benchmark_object_status(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_object_status(BenchmarkRun* run)
{
- _benchmark_object_status(run, FALSE);
+ helper_fn_benchmark_object_status(run, FALSE);
}
static void
benchmark_object_status_batch(BenchmarkRun* run)
{
- _benchmark_object_status(run, TRUE);
+ helper_fn_benchmark_object_status(run, TRUE);
}
static void
-_benchmark_object_read(BenchmarkRun* run, gboolean use_batch, guint block_size)
+helper_fn_benchmark_object_read(BenchmarkRun* run, gboolean use_batch, guint block_size)
{
guint const n = (use_batch) ? 10000 : 1000;
@@ -294,17 +294,17 @@ _benchmark_object_read(BenchmarkRun* run, gboolean use_batch, guint block_size)
static void
benchmark_object_read(BenchmarkRun* run)
{
- _benchmark_object_read(run, FALSE, 4 * 1024);
+ helper_fn_benchmark_object_read(run, FALSE, 4 * 1024);
}
static void
benchmark_object_read_batch(BenchmarkRun* run)
{
- _benchmark_object_read(run, TRUE, 4 * 1024);
+ helper_fn_benchmark_object_read(run, TRUE, 4 * 1024);
}
static void
-_benchmark_object_write(BenchmarkRun* run, gboolean use_batch, guint block_size)
+helper_fn_benchmark_object_write(BenchmarkRun* run, gboolean use_batch, guint block_size)
{
guint const n = (use_batch) ? 10000 : 1000;
@@ -362,17 +362,17 @@ _benchmark_object_write(BenchmarkRun* run, gboolean use_batch, guint block_size)
static void
benchmark_object_write(BenchmarkRun* run)
{
- _benchmark_object_write(run, FALSE, 4 * 1024);
+ helper_fn_benchmark_object_write(run, FALSE, 4 * 1024);
}
static void
benchmark_object_write_batch(BenchmarkRun* run)
{
- _benchmark_object_write(run, TRUE, 4 * 1024);
+ helper_fn_benchmark_object_write(run, TRUE, 4 * 1024);
}
static void
-_benchmark_object_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
+helper_fn_benchmark_object_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
{
guint const n = 1000;
@@ -419,13 +419,13 @@ _benchmark_object_unordered_create_delete(BenchmarkRun* run, gboolean use_batch)
static void
benchmark_object_unordered_create_delete(BenchmarkRun* run)
{
- _benchmark_object_unordered_create_delete(run, FALSE);
+ helper_fn_benchmark_object_unordered_create_delete(run, FALSE);
}
static void
benchmark_object_unordered_create_delete_batch(BenchmarkRun* run)
{
- _benchmark_object_unordered_create_delete(run, TRUE);
+ helper_fn_benchmark_object_unordered_create_delete(run, TRUE);
}
void
diff --git a/cli/cli.c b/cli/cli.c
index 0d6af17c0..3fe786026 100644
--- a/cli/cli.c
+++ b/cli/cli.c
@@ -86,7 +86,12 @@ main(int argc, char** argv)
gint i;
// Explicitly enable UTF-8 since functions such as g_format_size might return UTF-8 characters.
- setlocale(LC_ALL, "C.UTF-8");
+ g_autofree const char* local_result = setlocale(LC_ALL, "C.UTF-8");
+ if (local_result == NULL)
+ {
+ g_warning("Failed to set locale!");
+ return 1;
+ }
basename = g_path_get_basename(argv[0]);
g_set_prgname(basename);
diff --git a/cli/copy.c b/cli/copy.c
index e9f249996..720192d88 100644
--- a/cli/copy.c
+++ b/cli/copy.c
@@ -87,8 +87,6 @@ j_cmd_copy(gchar const** arguments)
}
else if (i == 1)
{
- g_autoptr(JItem) item = NULL;
-
if (j_uri_get(uri[i], &error))
{
ret = FALSE;
@@ -114,7 +112,7 @@ j_cmd_copy(gchar const** arguments)
}
batch = j_batch_new_for_template(J_SEMANTICS_TEMPLATE_DEFAULT);
- item = j_item_create(j_uri_get_collection(uri[i]), j_uri_get_item_name(uri[i]), NULL, batch);
+ j_item_create(j_uri_get_collection(uri[i]), j_uri_get_item_name(uri[i]), NULL, batch);
if (!j_batch_execute(batch))
{
diff --git a/doc/static-analysis.md b/doc/static-analysis.md
new file mode 100644
index 000000000..9ed9f07a9
--- /dev/null
+++ b/doc/static-analysis.md
@@ -0,0 +1,38 @@
+# Static Analysis
+
+The codebase is checked for defects using CodeChecker, which wraps several static analysis tools (clang-sa, gcc, infer, cppcheck).
+
+## Pipeline
+It is automatically run in the GitHub pipeline and emits an artifact called "CodeChecker Bug Reports".
+A small summary of the number and types of errors found is given at the end of the "Generate HTML report" step.
+To view the detailed results, the artifact must be downloaded, extracted, and the `index.html` or `statistics.html` file opened.
+
+## Local
+Alternatively, the tool can be run locally.
+A full guide can be found [here](https://github.com/Ericsson/codechecker/blob/master/docs/usage.md).
+
+Notably, the tool can calculate a diff between two analysis runs as explained [here](https://github.com/Ericsson/codechecker/blob/master/docs/usage.md#using-diff-command-on-the-local-filesystem).
+This can be used to check whether your current local changes would introduce or remove any bugs.
+
+In summary:
+1. Ensure CodeChecker, the desired static analysis tools, and all JULEA dependencies are installed and available.
+
+2. Generate a `compile_commands.json` file.
+```bash
+meson setup -Dis_analysis_build=true bld
+```
+
+3. Run the analysis.
+```bash
+CodeChecker analyze ./bld/compile_commands.json -o results
+```
+
+4. Parse and view the results.
+```bash
+CodeChecker parse --export html --output ./reports_html ./results &&
+firefox ./reports_html/index.html
+```
+
+## Potential improvements
+The current setup is quite bare-bones.
+CodeChecker supports running a server to store results of previous analysis runs, tracking reports that have already been marked as known false positives, and automatically calculating a diff between the main branch and the branch to be merged.
diff --git a/fuse/julea-fuse.c b/fuse/julea-fuse.c
index ca9d056b2..523a8ae9f 100644
--- a/fuse/julea-fuse.c
+++ b/fuse/julea-fuse.c
@@ -48,7 +48,12 @@ main(int argc, char** argv)
gint ret;
// Explicitly enable UTF-8 since functions such as g_format_size might return UTF-8 characters.
- setlocale(LC_ALL, "C.UTF-8");
+ g_autofree const char* local_result = setlocale(LC_ALL, "C.UTF-8");
+ if (local_result == NULL)
+ {
+ g_warning("Failed to set locale!");
+ return 1;
+ }
ret = fuse_main(argc, argv, &jfs_vtable, NULL);
diff --git a/fuse/read.c b/fuse/read.c
index 43450aa7d..c6142e50e 100644
--- a/fuse/read.c
+++ b/fuse/read.c
@@ -28,14 +28,12 @@ jfs_read(char const* path, char* buf, size_t size, off_t offset, struct fuse_fil
int ret = -ENOENT;
g_autoptr(JBatch) batch = NULL;
- g_autoptr(JKV) kv = NULL;
g_autoptr(JObject) object = NULL;
guint64 bytes_read;
(void)fi;
batch = j_batch_new_for_template(J_SEMANTICS_TEMPLATE_POSIX);
- kv = j_kv_new("posix", path);
object = j_object_new("posix", path);
j_object_read(object, buf, size, offset, &bytes_read, batch);
diff --git a/include/item/jcollection.h b/include/item/jcollection.h
index 4dbcd0148..f0583df65 100644
--- a/include/item/jcollection.h
+++ b/include/item/jcollection.h
@@ -37,12 +37,6 @@ struct JCollection;
typedef struct JCollection JCollection;
-G_END_DECLS
-
-#include -
-
-G_BEGIN_DECLS
-
/**
* \defgroup JCollection Collection
*
diff --git a/lib/core/jmessage.c b/lib/core/jmessage.c
index 1bc7c42be..d465794f8 100644
--- a/lib/core/jmessage.c
+++ b/lib/core/jmessage.c
@@ -259,7 +259,7 @@ j_message_extend(JMessage* message, gsize length)
if (count > 10)
{
- factor = pow(10, floor(log10(count)));
+ factor = (gsize)pow(10, floor(log10(count)));
}
message->size += length * factor;
diff --git a/lib/core/jnetwork.c b/lib/core/jnetwork.c
index eb72951e9..4ccd9f75d 100644
--- a/lib/core/jnetwork.c
+++ b/lib/core/jnetwork.c
@@ -696,7 +696,6 @@ j_network_connection_init(JNetworkConnection* connection)
EXE(j_network_connection_create_memory_resources(connection), "Failed to create memory resources for connection!");
- res = fi_cq_open(connection->domain, &(struct fi_cq_attr){ .wait_obj = FI_WAIT_UNSPEC, .format = FI_CQ_FORMAT_CONTEXT, .size = connection->info->tx_attr->size }, &connection->cq.tx, &connection->cq.tx);
res = fi_cq_open(connection->domain, &(struct fi_cq_attr){ .wait_obj = FI_WAIT_UNSPEC, .format = FI_CQ_FORMAT_CONTEXT, .size = connection->info->rx_attr->size }, &connection->cq.rx, &connection->cq.rx);
CHECK("Failed to create completion queue!");
diff --git a/lib/core/jtrace.c b/lib/core/jtrace.c
index ae3e8f0d8..18d53444d 100644
--- a/lib/core/jtrace.c
+++ b/lib/core/jtrace.c
@@ -729,30 +729,21 @@ j_trace_file_begin(gchar const* path, JTraceFileOperation op)
#ifdef HAVE_OTF
if (j_trace_flags & J_TRACE_OTF)
{
- gpointer value;
- guint32 file_id;
-
G_LOCK(j_trace_otf);
- if ((value = g_hash_table_lookup(otf_file_table, path)) == NULL)
+ if ((g_hash_table_lookup(otf_file_table, path)) == NULL)
{
- file_id = g_atomic_int_add(&otf_file_id, 1);
+ const guint32 file_id = g_atomic_int_add(&otf_file_id, 1);
OTF_Writer_writeDefFile(otf_writer, 0, file_id, path, 0);
g_hash_table_insert(otf_file_table, g_strdup(path), GUINT_TO_POINTER(file_id));
}
- else
- {
- file_id = GPOINTER_TO_UINT(value);
- }
G_UNLOCK(j_trace_otf);
OTF_Writer_writeBeginFileOperation(otf_writer, timestamp, trace_thread->otf.process_id, 1, 0);
}
#endif
-
- return;
}
void
diff --git a/lib/db-util/sql-generic-ddl.c b/lib/db-util/sql-generic-ddl.c
index f89a153f7..c6544c496 100644
--- a/lib/db-util/sql-generic-ddl.c
+++ b/lib/db-util/sql-generic-ddl.c
@@ -74,7 +74,7 @@ sql_generic_schema_create(gpointer backend_data, gpointer _batch, gchar const* n
}
}
- if (G_UNLIKELY(!_backend_batch_execute(backend_data, batch, error)))
+ if (G_UNLIKELY(!internal_backend_batch_execute(backend_data, batch, error)))
{
//no ddl in transaction - most databases won't support that - continue without any open transaction
goto _error;
@@ -360,7 +360,7 @@ sql_generic_schema_create(gpointer backend_data, gpointer _batch, gchar const* n
}
}
- if (G_UNLIKELY(!_backend_batch_start(backend_data, batch, error)))
+ if (G_UNLIKELY(!internal_backend_batch_start(backend_data, batch, error)))
{
goto _error;
}
@@ -368,7 +368,7 @@ sql_generic_schema_create(gpointer backend_data, gpointer _batch, gchar const* n
return TRUE;
_error:
- if (G_UNLIKELY(!_backend_batch_start(backend_data, batch, NULL)))
+ if (G_UNLIKELY(!internal_backend_batch_start(backend_data, batch, NULL)))
{
goto _error2;
}
@@ -426,7 +426,7 @@ sql_generic_schema_delete(gpointer backend_data, gpointer _batch, gchar const* n
}
}
- if (G_UNLIKELY(!_backend_batch_execute(backend_data, batch, error)))
+ if (G_UNLIKELY(!internal_backend_batch_execute(backend_data, batch, error)))
{
//no ddl in transaction - most databases wont support that - continue without any open transaction
goto _error;
@@ -456,7 +456,7 @@ sql_generic_schema_delete(gpointer backend_data, gpointer _batch, gchar const* n
goto _error;
}
- if (G_UNLIKELY(!_backend_batch_start(backend_data, batch, error)))
+ if (G_UNLIKELY(!internal_backend_batch_start(backend_data, batch, error)))
{
goto _error;
}
@@ -469,7 +469,7 @@ sql_generic_schema_delete(gpointer backend_data, gpointer _batch, gchar const* n
g_string_free(table_drop_sql, TRUE);
}
- if (G_UNLIKELY(!_backend_batch_start(backend_data, batch, NULL)))
+ if (G_UNLIKELY(!internal_backend_batch_start(backend_data, batch, NULL)))
{
goto _error2;
}
diff --git a/lib/db-util/sql-generic-dml.c b/lib/db-util/sql-generic-dml.c
index 4b9279582..fe429e944 100644
--- a/lib/db-util/sql-generic-dml.c
+++ b/lib/db-util/sql-generic-dml.c
@@ -249,7 +249,7 @@ sql_generic_insert(gpointer backend_data, gpointer _batch, gchar const* name, bs
_error:
- if (G_UNLIKELY(!_backend_batch_abort(backend_data, batch, NULL)))
+ if (G_UNLIKELY(!internal_backend_batch_abort(backend_data, batch, NULL)))
{
goto _error2;
}
@@ -375,7 +375,7 @@ sql_generic_update(gpointer backend_data, gpointer _batch, gchar const* name, bs
}
}
- if (G_UNLIKELY(!_backend_query_ids(backend_data, batch, name, selector, &matches, error)))
+ if (G_UNLIKELY(!internal_backend_query_ids(backend_data, batch, name, selector, &matches, error)))
{
goto _error;
}
@@ -439,7 +439,7 @@ sql_generic_update(gpointer backend_data, gpointer _batch, gchar const* name, bs
return TRUE;
_error:
- if (G_UNLIKELY(!_backend_batch_abort(backend_data, batch, NULL)))
+ if (G_UNLIKELY(!internal_backend_batch_abort(backend_data, batch, NULL)))
{
goto _error2;
}
@@ -470,7 +470,7 @@ sql_generic_delete(gpointer backend_data, gpointer _batch, gchar const* name, bs
goto _error;
}
- if (G_UNLIKELY(!_backend_query_ids(backend_data, batch, name, selector, &matches, error)))
+ if (G_UNLIKELY(!internal_backend_query_ids(backend_data, batch, name, selector, &matches, error)))
{
goto _error;
}
@@ -520,7 +520,7 @@ sql_generic_delete(gpointer backend_data, gpointer _batch, gchar const* name, bs
return TRUE;
_error:
- if (G_UNLIKELY(!_backend_batch_abort(backend_data, batch, NULL)))
+ if (G_UNLIKELY(!internal_backend_batch_abort(backend_data, batch, NULL)))
{
goto _error2;
}
diff --git a/lib/db-util/sql-generic-dql.c b/lib/db-util/sql-generic-dql.c
index 4fc80bba5..e65e44d11 100644
--- a/lib/db-util/sql-generic-dql.c
+++ b/lib/db-util/sql-generic-dql.c
@@ -23,7 +23,7 @@
#include "sql-generic-internal.h"
gboolean
-_backend_schema_get(gpointer backend_data, gchar const* namespace, gchar const* name, bson_t* schema, GError** error)
+internal_backend_schema_get(gpointer backend_data, gchar const* namespace, gchar const* name, bson_t* schema, GError** error)
{
J_TRACE_FUNCTION(NULL);
@@ -198,12 +198,11 @@ get_schema(gpointer backend_data, gchar const* namespace, gchar const* name, GEr
bson_iter_t iter;
gboolean has_next;
JDBTypeValue value;
- gboolean schema_initialized = FALSE;
char const* string_tmp;
schema_map = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
- if (!(schema_initialized = _backend_schema_get(backend_data, namespace, name, &schema, error)))
+ if (!internal_backend_schema_get(backend_data, namespace, name, &schema, error))
{
goto _error;
}
@@ -292,11 +291,11 @@ sql_generic_schema_get(gpointer backend_data, gpointer _batch, gchar const* name
gboolean ret;
JSqlBatch* batch = _batch;
- ret = _backend_schema_get(backend_data, batch->namespace, name, schema, error);
+ ret = internal_backend_schema_get(backend_data, batch->namespace, name, schema, error);
if (!ret)
{
- _backend_batch_abort(backend_data, _batch, NULL);
+ internal_backend_batch_abort(backend_data, _batch, NULL);
}
return ret;
@@ -480,7 +479,7 @@ build_query_condition_part(gpointer backend_data, JSqlBatch* batch, bson_iter_t*
}
static gboolean
-_bind_selector_query(gpointer backend_data, const gchar* namespace, bson_iter_t* iter, JSqlStatement* statement, GHashTable* variable_types, guint64* position, GError** error)
+internal_bind_selector_query(gpointer backend_data, const gchar* namespace, bson_iter_t* iter, JSqlStatement* statement, GHashTable* variable_types, guint64* position, GError** error)
{
J_TRACE_FUNCTION(NULL);
@@ -533,7 +532,7 @@ _bind_selector_query(gpointer backend_data, const gchar* namespace, bson_iter_t*
goto _error;
}
- if (G_UNLIKELY(!_bind_selector_query(backend_data, namespace, &iterchild, statement, variable_types, position, error)))
+ if (G_UNLIKELY(!internal_bind_selector_query(backend_data, namespace, &iterchild, statement, variable_types, position, error)))
{
goto _error;
}
@@ -598,7 +597,7 @@ bind_selector_query(gpointer backend_data, const gchar* namespace, bson_iter_t*
{
guint64 pos = 0;
- return _bind_selector_query(backend_data, namespace, iter, statement, schema, &pos, error);
+ return internal_bind_selector_query(backend_data, namespace, iter, statement, schema, &pos, error);
}
static gboolean
@@ -823,7 +822,7 @@ build_query_join_part(bson_t const* selector, JSqlBatch* batch, GString* sql, GE
}
gboolean
-_backend_query_ids(gpointer backend_data, gpointer _batch, gchar const* name, bson_t const* selector, GArray** matches, GError** error)
+internal_backend_query_ids(gpointer backend_data, gpointer _batch, gchar const* name, bson_t const* selector, GArray** matches, GError** error)
{
J_TRACE_FUNCTION(NULL);
diff --git a/lib/db-util/sql-generic-internal.h b/lib/db-util/sql-generic-internal.h
index 855572aa0..936374212 100644
--- a/lib/db-util/sql-generic-internal.h
+++ b/lib/db-util/sql-generic-internal.h
@@ -203,7 +203,7 @@ GString* j_sql_get_full_field_name(const gchar* namespace, const gchar* table, c
* \param[out] error An uninitialized GError* for error code passing.
* \return gboolean TRUE on success, FALSE otherwise.
*/
-gboolean _backend_schema_get(gpointer backend_data, gchar const* namespace, gchar const* name, bson_t* schema, GError** error);
+gboolean internal_backend_schema_get(gpointer backend_data, gchar const* namespace, gchar const* name, bson_t* schema, GError** error);
/**
* \brief Get the schema as a HashTable for internal usage.
@@ -263,7 +263,7 @@ gboolean bind_selector_query(gpointer backend_data, const gchar* namespace, bson
* \param[out] error An uninitialized GError* for error code passing.
* \return gboolean TRUE on success, FALSE otherwise.
*/
-gboolean _backend_query_ids(gpointer backend_data, gpointer _batch, gchar const* name, bson_t const* selector, GArray** matches, GError** error);
+gboolean internal_backend_query_ids(gpointer backend_data, gpointer _batch, gchar const* name, bson_t const* selector, GArray** matches, GError** error);
// TCL
@@ -275,7 +275,7 @@ gboolean _backend_query_ids(gpointer backend_data, gpointer _batch, gchar const*
* \param[out] error An uninitialized GError* for error code passing.
* \return gboolean TRUE on success, FALSE otherwise.
*/
-gboolean _backend_batch_start(gpointer backend_data, JSqlBatch* batch, GError** error);
+gboolean internal_backend_batch_start(gpointer backend_data, JSqlBatch* batch, GError** error);
/**
* \brief Execute a batch. Commits a transaction in the DB backend.
@@ -285,7 +285,7 @@ gboolean _backend_batch_start(gpointer backend_data, JSqlBatch* batch, GError**
* \param[out] error An uninitialized GError* for error code passing.
* \return gboolean TRUE on success, FALSE otherwise.
*/
-gboolean _backend_batch_execute(gpointer backend_data, JSqlBatch* batch, GError** error);
+gboolean internal_backend_batch_execute(gpointer backend_data, JSqlBatch* batch, GError** error);
/**
* \brief Abort a batch. Triggers a rollback in the DB backend.
@@ -295,6 +295,6 @@ gboolean _backend_batch_execute(gpointer backend_data, JSqlBatch* batch, GError*
* \param[out] error An uninitialized GError* for error code passing.
* \return gboolean TRUE on success, FALSE otherwise.
*/
-gboolean _backend_batch_abort(gpointer backend_data, JSqlBatch* batch, GError** error);
+gboolean internal_backend_batch_abort(gpointer backend_data, JSqlBatch* batch, GError** error);
#endif
diff --git a/lib/db-util/sql-generic-tcl.c b/lib/db-util/sql-generic-tcl.c
index bdfc04e59..41efad8f1 100644
--- a/lib/db-util/sql-generic-tcl.c
+++ b/lib/db-util/sql-generic-tcl.c
@@ -22,7 +22,7 @@
#include "sql-generic-internal.h"
gboolean
-_backend_batch_start(gpointer backend_data, JSqlBatch* batch, GError** error)
+internal_backend_batch_start(gpointer backend_data, JSqlBatch* batch, GError** error)
{
J_TRACE_FUNCTION(NULL);
@@ -50,7 +50,7 @@ _backend_batch_start(gpointer backend_data, JSqlBatch* batch, GError** error)
}
gboolean
-_backend_batch_execute(gpointer backend_data, JSqlBatch* batch, GError** error)
+internal_backend_batch_execute(gpointer backend_data, JSqlBatch* batch, GError** error)
{
J_TRACE_FUNCTION(NULL);
@@ -77,7 +77,7 @@ _backend_batch_execute(gpointer backend_data, JSqlBatch* batch, GError** error)
}
gboolean
-_backend_batch_abort(gpointer backend_data, JSqlBatch* batch, GError** error)
+internal_backend_batch_abort(gpointer backend_data, JSqlBatch* batch, GError** error)
{
J_TRACE_FUNCTION(NULL);
@@ -126,7 +126,7 @@ sql_generic_batch_start(gpointer backend_data, gchar const* namespace, JSemantic
batch->open = FALSE;
batch->aborted = FALSE;
- if (G_UNLIKELY(!_backend_batch_start(backend_data, batch, error)))
+ if (G_UNLIKELY(!internal_backend_batch_start(backend_data, batch, error)))
{
goto _error;
}
@@ -154,7 +154,7 @@ sql_generic_batch_execute(gpointer backend_data, gpointer _batch, GError** error
g_return_val_if_fail(batch != NULL, FALSE);
- if (G_UNLIKELY(!_backend_batch_execute(backend_data, batch, error)))
+ if (G_UNLIKELY(!internal_backend_batch_execute(backend_data, batch, error)))
{
goto _error;
}
diff --git a/lib/db/jdb-entry.c b/lib/db/jdb-entry.c
index feaa20504..043116a38 100644
--- a/lib/db/jdb-entry.c
+++ b/lib/db/jdb-entry.c
@@ -233,7 +233,10 @@ j_db_entry_delete(JDBEntry* entry, JDBSelector* selector, JBatch* batch, GError*
g_return_val_if_fail(batch != NULL, FALSE);
g_return_val_if_fail((selector == NULL) || (selector->schema == entry->schema), FALSE);
g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
- g_return_val_if_fail(g_hash_table_size(selector->join_schema) < 2, FALSE); // no cross-table deletes
+ if (selector != NULL && selector->join_schema != NULL)
+ {
+ g_return_val_if_fail(g_hash_table_size(selector->join_schema) < 2, FALSE); // no cross-table deletes
+ }
if (G_UNLIKELY(!j_db_internal_delete(entry, selector, batch, error)))
{
diff --git a/lib/item/jcollection.c b/lib/item/jcollection.c
index 6366c1f28..9e3a9b596 100644
--- a/lib/item/jcollection.c
+++ b/lib/item/jcollection.c
@@ -29,9 +29,6 @@
#include
-
#include
-
-#include
-
-#include
-
-
#include
#include
diff --git a/lib/object/jdistributed-object.c b/lib/object/jdistributed-object.c
index bee78b101..60d4effac 100644
--- a/lib/object/jdistributed-object.c
+++ b/lib/object/jdistributed-object.c
@@ -624,7 +624,7 @@ j_distributed_object_create_exec(JList* operations, JSemantics* semantics)
}
else
{
- gpointer object_handle;
+ gpointer object_handle = NULL;
ret = j_backend_object_create(object_backend, object->namespace, object->name, &object_handle) && ret;
ret = j_backend_object_close(object_backend, object_handle) && ret;
@@ -721,7 +721,7 @@ j_distributed_object_delete_exec(JList* operations, JSemantics* semantics)
else
{
gboolean lret = FALSE;
- gpointer object_handle;
+ gpointer object_handle = NULL;
if (j_backend_object_open(object_backend, object->namespace, object->name, &object_handle)
&& j_backend_object_delete(object_backend, object_handle))
@@ -782,7 +782,7 @@ j_distributed_object_read_exec(JList* operations, JSemantics* semantics)
g_autoptr(JListIterator) it = NULL;
g_autofree JMessage** messages = NULL;
JDistributedObject* object = NULL;
- gpointer object_handle;
+ gpointer object_handle = NULL;
gsize name_len = 0;
gsize namespace_len = 0;
guint32 server_count = 0;
@@ -972,7 +972,7 @@ j_distributed_object_write_exec(JList* operations, JSemantics* semantics)
g_autoptr(JListIterator) it = NULL;
g_autofree JMessage** messages = NULL;
JDistributedObject* object = NULL;
- gpointer object_handle;
+ gpointer object_handle = NULL;
gsize name_len = 0;
gsize namespace_len = 0;
guint32 server_count = 0;
@@ -1228,7 +1228,7 @@ j_distributed_object_status_exec(JList* operations, JSemantics* semantics)
}
else
{
- gpointer object_handle;
+ gpointer object_handle = NULL;
ret = j_backend_object_open(object_backend, object->namespace, object->name, &object_handle) && ret;
ret = j_backend_object_status(object_backend, object_handle, modification_time, size) && ret;
@@ -1328,7 +1328,7 @@ j_distributed_object_sync_exec(JList* operations, JSemantics* semantics)
}
else
{
- gpointer object_handle;
+ gpointer object_handle = NULL;
ret = j_backend_object_open(object_backend, object->namespace, object->name, &object_handle) && ret;
ret = j_backend_object_sync(object_backend, object_handle) && ret;
diff --git a/lib/object/jobject.c b/lib/object/jobject.c
index 2a8212c90..fccb31e6a 100644
--- a/lib/object/jobject.c
+++ b/lib/object/jobject.c
@@ -289,7 +289,7 @@ j_object_create_exec(JList* operations, JSemantics* semantics)
}
else
{
- gpointer object_handle;
+ gpointer object_handle = NULL;
ret = j_backend_object_create(object_backend, object->namespace, object->name, &object_handle) && ret;
ret = j_backend_object_close(object_backend, object_handle) && ret;
@@ -376,7 +376,7 @@ j_object_delete_exec(JList* operations, JSemantics* semantics)
else
{
gboolean lret = FALSE;
- gpointer object_handle;
+ gpointer object_handle = NULL;
if (j_backend_object_open(object_backend, object->namespace, object->name, &object_handle)
&& j_backend_object_delete(object_backend, object_handle))
@@ -435,7 +435,7 @@ j_object_read_exec(JList* operations, JSemantics* semantics)
JListIterator* it;
g_autoptr(JMessage) message = NULL;
JObject* object;
- gpointer object_handle;
+ gpointer object_handle = NULL;
/// \todo
//JLock* lock = NULL;
@@ -602,7 +602,7 @@ j_object_write_exec(JList* operations, JSemantics* semantics)
JListIterator* it;
g_autoptr(JMessage) message = NULL;
JObject* object;
- gpointer object_handle;
+ gpointer object_handle = NULL;
/// \todo
//JLock* lock = NULL;
@@ -807,7 +807,7 @@ j_object_status_exec(JList* operations, JSemantics* semantics)
}
else
{
- gpointer object_handle;
+ gpointer object_handle = NULL;
ret = j_backend_object_open(object_backend, object->namespace, object->name, &object_handle) && ret;
ret = j_backend_object_status(object_backend, object_handle, modification_time, size) && ret;
@@ -916,7 +916,7 @@ j_object_sync_exec(JList* operations, JSemantics* semantics)
}
else
{
- gpointer object_handle;
+ gpointer object_handle = NULL;
ret = j_backend_object_open(object_backend, object->namespace, object->name, &object_handle) && ret;
ret = j_backend_object_sync(object_backend, object_handle) && ret;
diff --git a/server/server.c b/server/server.c
index 08a33a1c5..1ac5a8dd9 100644
--- a/server/server.c
+++ b/server/server.c
@@ -285,7 +285,12 @@ main(int argc, char** argv)
};
// Explicitly enable UTF-8 since functions such as g_format_size might return UTF-8 characters.
- setlocale(LC_ALL, "C.UTF-8");
+ g_autofree const char* local_result = setlocale(LC_ALL, "C.UTF-8");
+ if (local_result == NULL)
+ {
+ g_warning("Failed to set locale!");
+ return 1;
+ }
context = g_option_context_new(NULL);
g_option_context_add_main_entries(context, entries, NULL);
diff --git a/test/core/batch.c b/test/core/batch.c
index a02093f80..f8e349946 100644
--- a/test/core/batch.c
+++ b/test/core/batch.c
@@ -86,7 +86,7 @@ test_batch_execute_empty(void)
}
static void
-_test_batch_execute(gboolean async)
+helper_fn_test_batch_execute(gboolean async)
{
g_autoptr(JCollection) collection = NULL;
g_autoptr(JItem) item = NULL;
@@ -126,7 +126,7 @@ static void
test_batch_execute(void)
{
J_TEST_TRAP_START;
- _test_batch_execute(FALSE);
+ helper_fn_test_batch_execute(FALSE);
J_TEST_TRAP_END;
}
@@ -134,7 +134,7 @@ static void
test_batch_execute_async(void)
{
J_TEST_TRAP_START;
- _test_batch_execute(TRUE);
+ helper_fn_test_batch_execute(TRUE);
J_TEST_TRAP_END;
}
diff --git a/test/item/uri.c b/test/item/uri.c
index 65a12f8d2..06f2b63fb 100644
--- a/test/item/uri.c
+++ b/test/item/uri.c
@@ -28,10 +28,11 @@
static void
test_uri_new_free(void)
{
- g_autoptr(JURI) uri = NULL;
+ JURI* uri = NULL;
J_TEST_TRAP_START;
uri = j_uri_new("julea://JULEA");
+ j_uri_free(uri);
J_TEST_TRAP_END;
}
diff --git a/test/test.c b/test/test.c
index 5228febae..a540d41b1 100644
--- a/test/test.c
+++ b/test/test.c
@@ -32,7 +32,12 @@ main(int argc, char** argv)
gint ret;
// Explicitly enable UTF-8 since functions such as g_format_size might return UTF-8 characters.
- setlocale(LC_ALL, "C.UTF-8");
+ g_autofree const char* local_result = setlocale(LC_ALL, "C.UTF-8");
+ if (local_result == NULL)
+ {
+ g_warning("Failed to set locale!");
+ return 1;
+ }
g_test_init(&argc, &argv, NULL);
diff --git a/tools/config.c b/tools/config.c
index 09c59e54e..63448a1d8 100644
--- a/tools/config.c
+++ b/tools/config.c
@@ -172,7 +172,12 @@ main(gint argc, gchar** argv)
};
// Explicitly enable UTF-8 since functions such as g_format_size might return UTF-8 characters.
- setlocale(LC_ALL, "C.UTF-8");
+ g_autofree const char* local_result = setlocale(LC_ALL, "C.UTF-8");
+ if (local_result == NULL)
+ {
+ g_warning("Failed to set locale!");
+ return 1;
+ }
context = g_option_context_new(NULL);
g_option_context_add_main_entries(context, entries, NULL);
diff --git a/tools/statistics.c b/tools/statistics.c
index f76d820a7..c9cb57a73 100644
--- a/tools/statistics.c
+++ b/tools/statistics.c
@@ -64,12 +64,17 @@ main(int argc, char** argv)
JStatistics* statistics_total;
gchar get_all;
+ // Explicitly enable UTF-8 since functions such as g_format_size might return UTF-8 characters.
+ g_autofree const char* local_result = setlocale(LC_ALL, "C.UTF-8");
+ if (local_result == NULL)
+ {
+ g_warning("Failed to set locale!");
+ return 1;
+ }
+
(void)argc;
(void)argv;
- // Explicitly enable UTF-8 since functions such as g_format_size might return UTF-8 characters.
- setlocale(LC_ALL, "C.UTF-8");
-
get_all = 1;
configuration = j_configuration();
statistics_total = j_statistics_new(FALSE);