]> sigrok.org Git - sigrok-cli.git/commitdiff
HACKING: catch up with libsigrok docs (mem alloc, var decl)
authorfenugrec <redacted>
Sat, 3 Dec 2022 02:52:00 +0000 (21:52 -0500)
committerGerhard Sittig <redacted>
Sun, 19 Feb 2023 12:50:23 +0000 (13:50 +0100)
Bring the "Random notes" section closer to the libsigrok documentation.
Adjust the discussion of memory allocation. Prefer variable declaration
at the start of routines, and separate them from value assignments.

HACKING

diff --git a/HACKING b/HACKING
index c9b876b1df7dc57a1df85cfe0aaaec6c815337e3..36c6756faaccd9228019d84a17f5aee8eeec9f0b 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -29,18 +29,27 @@ Contributions
 Random notes
 ------------
 
- - Consistently use g_try_malloc() / g_try_malloc0(). Do not use standard
+ - Don't do variable declarations in compound statements, only at the
+   beginning of a function.
+
+ - Generally avoid assigning values to variables at declaration time,
+   especially so for complex and/or run-time dependent values.
+
+ - Consistently use g_*malloc() / g_*malloc0(). Do not use standard
    malloc()/calloc() if it can be avoided (sometimes other libs such
    as libftdi can return malloc()'d memory, for example).
 
  - Always properly match allocations with the proper *free() functions. If
-   glib's g_try_malloc()/g_try_malloc0() was used, use g_free() to free the
+   glib's g_*malloc()/g_*malloc0() was used, use g_free() to free the
    memory. Otherwise use standard free(). Never use the wrong function!
 
- - Never use g_malloc() or g_malloc0(). These functions do not return NULL
-   if not enough memory is available but rather lead to an exit() or segfault
-   instead. This behaviour is not acceptable.
-   Use g_try_malloc()/g_try_malloc0() instead and check the return value.
+ - We assume that "small" memory allocations (< 1MB) will always succeed.
+   Thus, it's fine to use g_malloc() or g_malloc0() for allocations of
+   simple/small structs and such (instead of using g_try_malloc()), and
+   there's no need to check the return value.
+
+   Do use g_try_malloc() or g_try_malloc0() for large (>= 1MB) allocations
+   and check the return value.
 
  - You should never print any messages (neither to stdout nor stderr nor
    elsewhere) "manually" via e.g. printf() or g_log() or similar functions.