Yes it affects readability and I don't like the patch.

BTW please don't send HTML mail to this mailinglist.

Thanks,

On Sat, Aug 13, 2022 at 08:47:41AM +0200, Stein Gunnar Bakkeby wrote:
>    Doesn't this affect readability? Would it be easier to make the layout
>    symbol size 15 (one less than the monitor symbol)?
>    On Sat, 13 Aug 2022, 05:00 NRK, <[1]n...@disroot.org> wrote:
> 
>      the dwm source code somewhat silently assumes that the symbol will
>      fit
>      into 16 bytes. but this may not be the case since users can define
>      longer symbols in `config.h` (and there's no comment or note stating
>      anything about the size requirement).
>      this patch syncs the sizeof Layout->symbol and Monitor->ltsymbol to
>      be
>      the same which should emit a warning if the symbol in config.h is
>      longer
>      than 17 bytes.
>      however, there's still an edge case where the symbol is exactly 17
>      bytes
>      (including the nul character), in which case there won't be any
>      warnings. so use stpncpy and manually ensure nul termination.
>      ---
>      Â dwm.c | 10 +++++-----
>      Â 1 file changed, 5 insertions(+), 5 deletions(-)
>      diff --git a/dwm.c b/dwm.c
>      index 967c9e8..86c4985 100644
>      --- a/dwm.c
>      +++ b/dwm.c
>      @@ -107,12 +107,12 @@ typedef struct {
>      Â } Key;
>      Â typedef struct {
>      -Â  Â  Â  Â const char *symbol;
>      +Â  Â  Â  Â const char symbol[16];
>      Â  Â  Â  Â  void (*arrange)(Monitor *);
>      Â } Layout;
>      Â struct Monitor {
>      -Â  Â  Â  Â char ltsymbol[16];
>      +Â  Â  Â  Â char ltsymbol[sizeof ((Layout *)0)->symbol];
>      Â  Â  Â  Â  float mfact;
>      Â  Â  Â  Â  int nmaster;
>      Â  Â  Â  Â  int num;
>      @@ -397,7 +397,7 @@ arrange(Monitor *m)
>      Â void
>      Â arrangemon(Monitor *m)
>      Â {
>      -Â  Â  Â  Â strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof
>      m->ltsymbol);
>      +Â  Â  Â  Â *stpncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof
>      m->ltsymbol - 1) = '\0';
>      Â  Â  Â  Â  if (m->lt[m->sellt]->arrange)
>      Â  Â  Â  Â  Â  Â  Â  Â  m->lt[m->sellt]->arrange(m);
>      Â }
>      @@ -644,7 +644,7 @@ createmon(void)
>      Â  Â  Â  Â  m->topbar = topbar;
>      Â  Â  Â  Â  m->lt[0] = &layouts[0];
>      Â  Â  Â  Â  m->lt[1] = &layouts[1 % LENGTH(layouts)];
>      -Â  Â  Â  Â strncpy(m->ltsymbol, layouts[0].symbol, sizeof
>      m->ltsymbol);
>      +Â  Â  Â  Â *stpncpy(m->ltsymbol, layouts[0].symbol, sizeof
>      m->ltsymbol - 1) = '\0';
>      Â  Â  Â  Â  return m;
>      Â }
>      @@ -1507,7 +1507,7 @@ setlayout(const Arg *arg)
>      Â  Â  Â  Â  Â  Â  Â  Â  selmon->sellt ^= 1;
>      Â  Â  Â  Â  if (arg && arg->v)
>      Â  Â  Â  Â  Â  Â  Â  Â  selmon->lt[selmon->sellt] = (Layout
>      *)arg->v;
>      -Â  Â  Â  Â strncpy(selmon->ltsymbol,
>      selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
>      +Â  Â  Â  Â *stpncpy(selmon->ltsymbol,
>      selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol - 1) =
>      '\0';
>      Â  Â  Â  Â  if (selmon->sel)
>      Â  Â  Â  Â  Â  Â  Â  Â  arrange(selmon);
>      Â  Â  Â  Â  else
>      --
>      2.35.1
> 
> References
> 
>    1. mailto:n...@disroot.org

-- 
Kind regards,
Hiltjo

Reply via email to