Skip to content

Followup fix to #2177 with correct order of memset args#2196

Merged
willend merged 1 commit intomccode-dev:mainfrom
tkittel:main
Nov 18, 2025
Merged

Followup fix to #2177 with correct order of memset args#2196
willend merged 1 commit intomccode-dev:mainfrom
tkittel:main

Conversation

@tkittel
Copy link
Contributor

@tkittel tkittel commented Nov 18, 2025

Free-form text area

This one-liner is a fix to incorrect memset ordering args introduced in #2177. I had not noticed, since McStas warnings are not errors, and all CI ran green, but fortunately @mads-bertelsen spotted a compilation warning.

Why did it run green? Most likely the incorrect memset call had no effect (size parameter was inadvertently 0), so the struct was just as uninitialized as before #2177.

Suggestions for how we can perhaps try to make sure the CI catches this in the future:

  1. It would be awesome if we could slowly one by one work on turning warnings into errors.
  2. Run CI where malloc does not return zero initialised memory. I believe we could achieve this by setting (at least on ubuntu) MALLOC_PERTURB_=123 (or even MALLOC_PERTURB_=$(($RANDOM % 255 + 1))).

@willend let me know if you wish me to turn any of the above suggestions into an issue.


Development OS / boundary conditions

Please describe what OS you developed and tested your additions on, and if any special dependencies are required:


PR Checklist for contributing to McStas/McXtrace

For a coherent and useful contribution to McStas/McXtrace, please fill in relevant parts of the checklist:

  • My contribution includes patches to an existing component file

    • I have used the mcdoc utility and rendered a reasonable documentation page for the component (please attach as screenshot in comments!)
    • I have ensured that basic use of the component is OK (e.g. an instrument using it compiles?)
    • I have used the mctest utility to test one or more instruments making use of the component (please attach mcviewtest report as screenshot in comments)
    • I have used the mcrun --c-lint "linter" and followed advice to remove most / all warnings that are raised
  • My contribution includes patches to an existing instrument file

    • I have used the mcdoc utility and rendered a reasonable documentation page for the instrument (please attach as screenshot in comments!)
    • I have used the mctest utility to test the instrument (please attach mcviewtest report as screenshot in comments)
    • I have used the mcrun --c-lint "linter" and followed advice to remove most / all warnings that are raised
  • My contribution includes a new component file

    • I have ensured that naming of parameters are in the style of existing components. (Please check the McStas or McXtrace NOMENCLATURE docs.)
    • I have ensured that component parameters are in the usually units of McStas or McXtrace (SI + neutron/x-ray 'usual' units)
    • I have used the mcdoc utility and rendered a reasonable documentation page for the component (please attach as screenshot in comments!)
    • I have ensured that basic use of the component is OK (e.g. an instrument using it compiles?)
    • I have included a corresponding example instrument and will fill in the new instrument section below
    • My new component is added within the contrib component category
  • My contribution includes a new instrument file

    • I have used the mcdoc utility and rendered a reasonable documentation page for the instrument (please attach as screenshot in comments!)
    • I have ensured that basic use of the instrument is OK (e.g. it compiles?)
    • ... and provided reasonable default parameters in that instrument that produce reasonable output
    • ... and maybe even added a %Example: line to describe expected behaviour
    • I have used the mcrun --c-lint "linter" and followed advice to remove most / all warnings that are raised
    • My new instrument is added within the examples hierarchy in a folder in the style of examples/ESS/New_stuff/New_stuff.instr
    • My new instrument has a new, unique filename, not clashing with existing example instruments
    • My new instrument requires a data/input file. If the datafile is specific for my instrument I have left it in the same example folder, but if general use I have placed it in the global data folder.
  • My work touches the code-generator in mccode/src

    • I have added reasoning and documentation for the change through an ADR record in our GRAMMAR section
    • I am attaching test output in the comments
  • My work touches / adds to the runtime lib code (.c,.h etc in multiple locations

    • I am have added reasoning and documentation for the change below
    • I am attaching test output in the comments
  • My PR is meant to fix a specific, existing issue

    • I have indicated the issue number here:
    • I have added documentation for the fix and possible side effects
  • My contribution contains something else

    • Explanation is added in free form text above or below the checklist

@willend
Copy link
Contributor

willend commented Nov 18, 2025

@tkittel thanks for this - seems a healthy patch as well as good suggestions for issues / further improvement! Please do formulate issues along these lines!

Merging.

@willend willend merged commit 3e40778 into mccode-dev:main Nov 18, 2025
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants