Skip to content
Snippets Groups Projects
Forked from redox-os / relibc
1110 commits behind the upstream repository.
  • AdminXVII's avatar
    0a558de7
    Fix reference getting moved · 0a558de7
    AdminXVII authored
    The sigaction handler called map on an option, creating a pointer to a
    move value. This in turned caused UB for signal handlers. Avoid using
    pointers directly, and instead prefer references.
    0a558de7
    History
    Fix reference getting moved
    AdminXVII authored
    The sigaction handler called map on an option, creating a pointer to a
    move value. This in turned caused UB for signal handlers. Avoid using
    pointers directly, and instead prefer references.
signal.c 538 B
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>

#include "test_helpers.h"

void handler(int sig) {
    puts("Signal handler called!");
}

int main(void) {
    void (*signal_status)(int) = signal(SIGUSR1, handler);
    ERROR_IF(signal, signal_status, == SIG_ERR);
    signal_status = signal(SIGUSR1, handler);
    ERROR_IF(signal, signal_status, != handler);

    puts("Raising...");

    int raise_status = raise(SIGUSR1);
    ERROR_IF(raise, raise_status, < 0);

    puts("Raised.");
}