OSDN Git Service

process_pref_file_expr()内のchar b[]がstaticでなく, 内容が保証されな
authornothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Tue, 10 Aug 2004 19:42:28 +0000 (19:42 +0000)
committernothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Tue, 10 Aug 2004 19:42:28 +0000 (19:42 +0000)
commita6135b25802f0913ba9015244251005f60774cbb
tree49123c9b85575bc6ef6dcb5505348dd799d3fb5b
parent921a0298c5add4707d1d16beb61099a8976c98fd
process_pref_file_expr()内のchar b[]がstaticでなく, 内容が保証されな
い領域へのポインタを返して使っているという指摘があった. しかしながら,
単にstaticにすると領域を繰り返し上書きしてしまい, 条件式が仕様と違う
動作をしてしまう問題があった.

* 例として, ?:[EQU Life $REALM1 $REALM2]といった条件で, どちらかの領
  域が生命だとしても偽になってしまうというバグが発生する.

そのため, process_pref_file_expr()内部で文字列の部分コピーを行う仕様
をやめ, 以前のように元文字列のポインタを受け取って元文字列に直接'\0'
を書き込む仕様に戻した. 元文字列が'\0'でトークンに分割されて壊れては
ならないのはpicktypeエディタでの編集中の文字列のみであり, autopick.c
のprocess_pref_file_expr()呼び出しでのみ文字列のコピーを用意する仕様
とした.
src/autopick.c
src/externs.h
src/files.c