개발중인 오픈소스 프로그램이 하나 있다.
파일 리스트가 담긴 리스트 파일과, 해당 리스트와 매칭되는 '실제 파일' 을 비교하여 리스트 파일을 수정해주는 프로그램인데...
이를 1년전쯤에 만들었다가 면접에서 구조 지적을 한번 받고나서 (C++인데 왜 C 스타일로 짰느냐...) 리팩토링 작업중이었다.
프로그램의 중요한 부분 중 하나인, '리스트 파일을 읽어오는 함수' 를 재작업하는데 자꾸 프로그램이 다운되는 현상이 있어 문제를 체크해보다가... eof 체크도 넣어보고 했는데.
원인은 좀 다른곳에 있었다.

요게 그 문제의 함수부.
string 변수인 tempinput에 파일 1줄을 읽어 저장하고, 해당 파일 라인에 'name' 이라는 키워드가 있는지 검사를 하는 구조이다.
name 키워드가 있어야 아래의 MidData 및 Convert가 작동을 하는데,
구조를 다시 생각해보니
File line Read -> npos Check -> (if true) Convert 의 구조로 진행되어야할것이
npos Check -> (if true) File line Read -> Convert로 돌아가고있는게 아니었는가.
그러니 자꾸 터지지...

오류를 수정하면서 모양도 조금 다듬었다.
좀 이런 멍청한 실수는 안해야되는데... 참...
밤이라 피곤해서 그랬다고 생각하자...
'프로그래밍 > C/C++' 카테고리의 다른 글
포인터 변수 사용시 데이터 오염 문제 (0) | 2020.11.28 |
---|---|
Const 키워드. (0) | 2020.08.18 |
Visual C++에서 C++ 버전확인하는 방법. (3) | 2020.02.27 |
기록 #1 (0) | 2020.01.18 |
Jsoncpp 라이브러리 사용 관련 (0) | 2020.01.01 |