WIP: Une erreur de segmentation (dans le fonction create_arrow(), je suppose)

This commit is contained in:
Jean Sirmai 2023-09-28 12:53:08 +02:00
parent d2ad9649c7
commit 04cff04b1e
Signed by: jean
GPG Key ID: FB3115C340E057E3
2 changed files with 19 additions and 24 deletions

View File

@ -488,9 +488,8 @@ static void show_user_choices(GLuint *arrows, int arrows_nb,
static void show_user_action(GLuint *arrows, int arrows_nb, int address, int requested_weight, static void show_user_action(GLuint *arrows, int arrows_nb, int address, int requested_weight,
int current_weight, int site, int x, int y, int z) int current_weight, int site, int x, int y, int z)
{ {
if (address == -1 && requested_weight > 0) {printf("no such arrow found (%d,%d,%d,%d)\n\ if (address == -1 && requested_weight > 0) {printf("no such arrow found (address == -1)\n\
requested weight == %d => CREATE",\ requested weight == %d => CREATE", requested_weight); return;}
arrows[address + 1], arrows[address + 2], arrows[address + 3], arrows[address + 4], requested_weight); return;}
if (address >= 0 && requested_weight == 0) {printf("arrow (%d,%d,%d,%d) found at address %d; current_weight = %d;\n\ if (address >= 0 && requested_weight == 0) {printf("arrow (%d,%d,%d,%d) found at address %d; current_weight = %d;\n\
requested weight == %d => ERASE",\ requested weight == %d => ERASE",\
@ -500,14 +499,12 @@ static void show_user_action(GLuint *arrows, int arrows_nb, int address, int req
requested weight != current weight => MODIFY",\ requested weight != current weight => MODIFY",\
arrows[address + 1], arrows[address + 2], arrows[address + 3], arrows[address + 4], address/5, current_weight); return;} arrows[address + 1], arrows[address + 2], arrows[address + 3], arrows[address + 4], address/5, current_weight); return;}
if (address >= 0 && current_weight == requested_weight){ if (address >= 0 && current_weight == requested_weight){printf("arrow (%d,%d,%d,%d) found at address %d;\n\
printf("arrow (%d,%d,%d,%d) found at address %d;\n\
requested_weight == current_weight => END",\ requested_weight == current_weight => END",\
arrows[address + 1], arrows[address + 2], arrows[address + 3], arrows[address + 4], address/5); return;} arrows[address + 1], arrows[address + 2], arrows[address + 3], arrows[address + 4], address/5); return;}
if (address == -1 && requested_weight == 0) {printf("no such arrow found (%d,%d,%d,%d)\n\ if (address == -1 && requested_weight == 0) {printf("no such arrow found (address == -1)\n\
requested weight == 0 => END",\ requested weight == 0 => END"); return;}
arrows[address + 1], arrows[address + 2], arrows[address + 3], arrows[address + 4]); return;}
} }
/* /*
@ -558,7 +555,9 @@ static int rewrite_arrow (GLuint *arrows, int arrows_nb, int address, int weight
*/ */
static int create_arrow (GLuint *arrows, int arrows_nb, int weight, int site, int x, int y, int z) static int create_arrow (GLuint *arrows, int arrows_nb, int weight, int site, int x, int y, int z)
{ {
buffer_lines_origin = g_realloc(buffer_lines_origin, buffer_lines_size * sizeof(GLuint)); // buffer_lines_size += 14;
buffer_lines_origin = g_realloc(buffer_lines_origin, buffer_lines_size * 2 * sizeof(GLuint));
assert (buffer_lines_origin); assert (buffer_lines_size); assert (buffer_lines_origin); assert (buffer_lines_size);
@ -657,14 +656,14 @@ void main_test_graphics (void)
// assert : no more than one arrow per address TODO NOT checked before init // assert : no more than one arrow per address TODO NOT checked before init
// notify : weights are replaced, NOT added (could be !) TODO // notify : weights are replaced, NOT added (could be !) TODO
int space_X = 4, space_Y = 1, space_Z = 1; int space_X = 3, space_Y = 3, space_Z = 3;
int pref_show_grids = 0; // 0, 1, 2, 3, 5, 6, 10, 15, 30, etc int pref_show_grids = 0; // 0, 1, 2, 3, 5, 6, 10, 15, 30, etc
// xyz, 0, x, y, z, xy, xz, yz, xyz // xyz, 0, x, y, z, xy, xz, yz, xyz
GLuint arrows[] = { GLuint arrows[] = {
1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
1, 0, 2, 0, 0, 1, 2, 2, 0, 0,
1, 1, 3, 0, 0, 1, 3, 0, 2, 0,
// load, site, x, y, z // load, site, x, y, z
}; };
int arrows_nb = sizeof(arrows) / sizeof(arrows[0]) / 5; int arrows_nb = sizeof(arrows) / sizeof(arrows[0]) / 5;
@ -683,10 +682,11 @@ void main_test_graphics (void)
* are always defined (whether arrows are drawn or not). */ * are always defined (whether arrows are drawn or not). */
arrows_write_terminations (space_X, space_Y, space_Z); arrows_write_terminations (space_X, space_Y, space_Z);
arrows_nb = set_arrow (arrows, arrows_nb, 0, 0, 0, 0, 0);
arrows_nb = set_arrow (arrows, arrows_nb, 0, 0, 2, 0, 0); arrows_nb = set_arrow (arrows, arrows_nb, 0, 0, 2, 0, 0);
arrows_nb = set_arrow (arrows, arrows_nb, 0, 1, 1, 0, 0); arrows_nb = set_arrow (arrows, arrows_nb, 0, 1, 1, 0, 0);
arrows_nb = set_arrow (arrows, arrows_nb, 0, 1, 3, 0, 0); arrows_nb = set_arrow (arrows, arrows_nb, 0, 1, 3, 0, 0);
arrows_nb = set_arrow (arrows, arrows_nb, 1, 1, 2, 2, 0);
arrows_nb = set_arrow (arrows, arrows_nb, 1, 3, 0, 2, 0);
int weight = 0, site = 0, int weight = 0, site = 0,
stx = space_Z * space_Y, sty = space_Z, stz = 1, arrow_offset = 0; stx = space_Z * space_Y, sty = space_Z, stz = 1, arrow_offset = 0;

View File

@ -31,20 +31,15 @@
#define VERTEX_SHADER_FILE "src/shaders/shader.vert" #define VERTEX_SHADER_FILE "src/shaders/shader.vert"
#define FRAG_SHADER_FILE "src/shaders/shader.frag" #define FRAG_SHADER_FILE "src/shaders/shader.frag"
// Que fait l'instruction suivante (ligne 397 de graphics.c) // Que fait l'instruction suivante (ligne 397 de graphics.c)
// dans "bool graphics_init(const char *gl_area)" ? // dans "bool graphics_init(const char *gl_area)" ?
// //
// if (!graphics_init_shaders(gl_area)) return false; // if (!graphics_init_shaders(gl_area)) return false;
//
// Et comment et pourquoi cette structure "gl_area_array" ?
static volatile int buffer_vertex_size = 0; // (Dynamic array of ptrs to dynamically allocated gl_area_entry)
static volatile int buffer_lines_size = 0; //
static volatile int buffer_colors_size = 0;
static volatile int buffer_plans_size = 0;
/*
* Dynamic array of ptrs to dynamically allocated gl_area_entry
*/
// struct gl_area_entry **gl_area_array = NULL; // struct gl_area_entry **gl_area_array = NULL;