Fixed infinite loop in buffer name resolution
parent
6eb6ff04b5
commit
9d68aeeac8
|
@ -57,7 +57,7 @@ enum{
|
||||||
FCoderMode_Original = 0,
|
FCoderMode_Original = 0,
|
||||||
FCoderMode_NotepadLike = 1,
|
FCoderMode_NotepadLike = 1,
|
||||||
};
|
};
|
||||||
static int32_t fcoder_mode = FCoderMode_NotepadLike;
|
static int32_t fcoder_mode = FCoderMode_Original;
|
||||||
|
|
||||||
static ID_Line_Column_Jump_Location prev_location = {0};
|
static ID_Line_Column_Jump_Location prev_location = {0};
|
||||||
|
|
||||||
|
|
|
@ -495,23 +495,39 @@ BUFFER_NAME_RESOLVER_SIG(default_buffer_name_resolution){
|
||||||
memcpy(conflict->unique_name_in_out, conflict->base_name, len);
|
memcpy(conflict->unique_name_in_out, conflict->base_name, len);
|
||||||
|
|
||||||
if (conflict->file_name != 0){
|
if (conflict->file_name != 0){
|
||||||
|
char uniqueifier_space[256];
|
||||||
|
String uniqueifier = make_fixed_width_string(uniqueifier_space);
|
||||||
|
|
||||||
String s_file_name = make_string(conflict->file_name, conflict->file_name_len);
|
String s_file_name = make_string(conflict->file_name, conflict->file_name_len);
|
||||||
s_file_name = path_of_directory(s_file_name);
|
s_file_name = path_of_directory(s_file_name);
|
||||||
|
if (s_file_name.size > 0){
|
||||||
s_file_name.size -= 1;
|
s_file_name.size -= 1;
|
||||||
char *end = s_file_name.str + s_file_name.size;
|
char *end = s_file_name.str + s_file_name.size;
|
||||||
|
bool32 past_the_end = false;
|
||||||
for (int32_t j = 0; j < x; ++j){
|
for (int32_t j = 0; j < x; ++j){
|
||||||
s_file_name = path_of_directory(s_file_name);
|
s_file_name = path_of_directory(s_file_name);
|
||||||
if (j + 1 < x){
|
if (j + 1 < x){
|
||||||
s_file_name.size -= 1;
|
s_file_name.size -= 1;
|
||||||
}
|
}
|
||||||
if (s_file_name.size <= 0){
|
if (s_file_name.size <= 0){
|
||||||
|
if (j + 1 < x){
|
||||||
|
past_the_end = true;
|
||||||
|
}
|
||||||
s_file_name.size = 0;
|
s_file_name.size = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
char *start = s_file_name.str + s_file_name.size;
|
char *start = s_file_name.str + s_file_name.size;
|
||||||
|
|
||||||
String uniqueifier = make_string(start, (int32_t)(end - start));
|
append(&uniqueifier, make_string(start, (int32_t)(end - start)));
|
||||||
|
if (past_the_end){
|
||||||
|
append(&uniqueifier, "~");
|
||||||
|
append_int_to_str(&uniqueifier, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
append_int_to_str(&uniqueifier, i);
|
||||||
|
}
|
||||||
|
|
||||||
String builder = make_string_cap(conflict->unique_name_in_out,
|
String builder = make_string_cap(conflict->unique_name_in_out,
|
||||||
conflict->unique_name_len_in_out,
|
conflict->unique_name_len_in_out,
|
||||||
|
|
2
todo.txt
2
todo.txt
|
@ -13,12 +13,14 @@
|
||||||
[x] Crash when freeing marker object without visuals
|
[x] Crash when freeing marker object without visuals
|
||||||
[x] High CPU usage in listers (endless animation bug)
|
[x] High CPU usage in listers (endless animation bug)
|
||||||
[x] Panel resizing doesn't work
|
[x] Panel resizing doesn't work
|
||||||
|
[] On windows file lister: /foo/bar.txt
|
||||||
[] Notepad like mode clicking to new view doesn't snap the mark
|
[] Notepad like mode clicking to new view doesn't snap the mark
|
||||||
[] Notepad like mode replacing text with cursor at end of selection in middle of long file
|
[] Notepad like mode replacing text with cursor at end of selection in middle of long file
|
||||||
[] Tab when no valid completions in open file lister
|
[] Tab when no valid completions in open file lister
|
||||||
[] Graphics problem (fonts not rendering)
|
[] Graphics problem (fonts not rendering)
|
||||||
[] Texture binding changes too often problem.
|
[] Texture binding changes too often problem.
|
||||||
[] SSHFS segfault on linux
|
[] SSHFS segfault on linux
|
||||||
|
[] New file when the file is already open
|
||||||
Repro Needed
|
Repro Needed
|
||||||
{
|
{
|
||||||
[] pasting long comment at top of code files doesn't always parse right away???
|
[] pasting long comment at top of code files doesn't always parse right away???
|
||||||
|
|
Loading…
Reference in New Issue