Skip to content
This repository has been archived by the owner on Jan 4, 2022. It is now read-only.

Error Management

Kilian edited this page Mar 20, 2020 · 8 revisions

Introduction

This section is meant to explain our error codes and why they were triggered in the first place ! First, they are defined in an enum from enums.h as :

typedef enum    e_status
{
    NOTHING,
    ...
    NB_ERRORS
}               t_status;

Each macro except E_P, E_P_NAME, E_FLOAT, E_EDIT_ENTITY, E_EDIT_PORTAL, E_EDIT_SECTOR, E_EDIT_SECT_PORTAL, E_EDIT_TEXT and E_EDIT_VERTEX which are deprecated, NB_ERRORS which is used to allocate memory for messages and NOTHING, DEATH and WIN which are game-states at program termination so they fall in the same function call as those errors, are used in the current version of the program and every single error is linked to a message defined in env.h. So, when the program encounters an error it uses our clean() function prototyped as :

void    clean(t_env *env, uint8_t error)

env points to the structure that stores almost everything from our program (defined in structs.h) so does the allocated memory and the error message array. Given an error defined in enum t_status, clean() frees used memory and display the right message on the standard output before exit() with error as parameter. As explained in README.md, you can retrieve the termination code using the following command in your shell :

$> echo $?

In the following sections each individual error is formatted as :

  • ERROR_CODE : ERROR_NAME

Description

Click on the sub-category name to be redirected by the related errors.

Error breakdown

This project uses SDL2 to get a graphic output and SDL2_TTF, a SDL2 Framework which allow to display text inside windows generated via SDL2. In some cases we need to protect these function's returned values to avoid any problem.

On top of graphic output we wanted to add somewhat of an audio atmosphere. To accomplish the goal we used sndfile to retrieve critical informations or Waveform (.wav) audio streams and ao to playback buffered frequencies. Like for SDL2 and SDL_TTF we need to protect some functions so that the program's execution goes smoothly.

Since our map is a plain text file (example map available here), we must ensure that a lot of data in it is valid at some point during the parsing because the user is able to modify the map data itself. See our map format to fix the following errors by hand.

The corresponding errors are either common or don't directly concern our source-code but need to be handled nonetheless to ensure the process integrity.

Clone this wiki locally