Skip to content

Commit aa18125

Browse files
att
1 parent 8b00bb5 commit aa18125

File tree

6 files changed

+24
-5
lines changed

6 files changed

+24
-5
lines changed

main

0 Bytes
Binary file not shown.

src/resource/resource/constructors_and_destructors.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,15 @@ DtwResource * DtwResource_sub_resource(DtwResource *self,const char *format, ..
2929
);
3030
return NULL;
3131
}
32-
32+
if(self->were_renamed){
33+
private_DtwResource_raise_error(
34+
self,
35+
DTW_RESOURCE_RENAMED_RESOURCE_CANNOT_HAVE_SONS,
36+
"you cannot create a sub resurce from a renamed resource",
37+
self->name
38+
);
39+
return NULL;
40+
}
3341
va_list args;
3442
va_start(args, format);
3543
char *name = private_dtw_format_vaarg(format,args);

src/resource/resource/extras.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,18 @@ void DtwResource_rename(DtwResource *self,const char *new_name){
7373
);
7474
return;
7575
}
76+
DtwResourceArray *sons =self->sub_resources;
77+
if(sons->size > 0){
78+
private_DtwResource_raise_error(
79+
self,
80+
DTW_RESOURCE_RENAMED_RESOURCE_CANNOT_HAVE_SONS,
81+
"you cannot rename a resource with active sons",
82+
self->name
83+
);
84+
return;
85+
}
7686

87+
self->were_renamed = true;
7788
char *old_path = strdup(self->path);
7889
free(self->path);
7990
free(self->name);
@@ -93,8 +104,7 @@ void DtwResource_rename(DtwResource *self,const char *new_name){
93104
else{
94105
dtw_move_any(old_path,self->path,DTW_NOT_MERGE);
95106
}
96-
DtwResourceArray_free(self->sub_resources);
97-
self->sub_resources = newDtwResourceArray();
107+
98108
free(old_path);
99109

100110
}

src/resource/resource/resource.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ typedef struct DtwResource{
1414
bool its_value_folder;
1515
bool loaded;
1616
bool is_binary;
17+
bool were_renamed;
1718
unsigned char *value_any;
1819
long value_size;
1920

src/resource/resource_array/resource_array.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ void DtwResourceArray_represent(DtwResourceArray *self){
6565
void DtwResourceArray_free(DtwResourceArray *self){
6666
for(int i = 0; i < self->size; i++){
6767
DtwResource_free(self->resources[i]);
68-
68+
6969
}
7070
free(self->resources);
7171
free(self);

src/resource/root_props/root_props.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#define DTW_RESOURCE_PRIMARY_KEY_CANNOT_HAVE_SUB_RESOURCE 7
1010
#define DTW_IMPOSSIBLE_TO_RENAME_A_PRIMARY_KEY 8
1111
#define DTW_RESOURCE_PRIMARY_KEY_CANNOT_HAVE_SUB_SCHEMA 9
12-
12+
#define DTW_RESOURCE_RENAMED_RESOURCE_CANNOT_HAVE_SONS 10
1313
typedef struct {
1414
DtwTransaction *transaction;
1515
DtwRandonizer *randonizer;

0 commit comments

Comments
 (0)