fix: FLAT 직렬화 시 비활성 조건부 GROUP 블록 바이트 포함 버그 수정
toByteArray() / getBytesDataLength() GROUP 케이스에서 size==0 이면 refPath/refValue 유무와 무관하게 무조건 skip 하도록 변경. (toJson() 동작과 일치) 기존 로직은 refPath 또는 refValue 가 없는 경우에만 skip 하여, 조건부 블록(EZDATA, MSG 등)이 비활성 상태(size=0, isHidden=false)일 때도 FLAT 바이트에 잘못 포함되는 문제가 있었음. → FlatReader 파싱 시 오프셋 불일치로 overflow 예외 또는 DATA 필드 오염 발생. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1023,13 +1023,8 @@ public class StandardItem implements Serializable, Cloneable {
|
|||||||
totalSize += getLength();
|
totalSize += getLength();
|
||||||
break;
|
break;
|
||||||
case StandardType.GROUP :
|
case StandardType.GROUP :
|
||||||
// skip variable group
|
// skip inactive/conditional group (size==0 means not activated)
|
||||||
if( getSize() == 0
|
if( getSize() == 0 ) {
|
||||||
//카카오뱅크 => 카카오카드 400응답시 아래 로직을 추가해야 전체건수에서 메시지부가 처리됨
|
|
||||||
//메시지부 size 0 refPath refValue 사용 해서 있고 없고 처리
|
|
||||||
&& (StringUtils.isBlank(getRefPath())
|
|
||||||
|| StringUtils.isBlank(getRefValue()))
|
|
||||||
) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (isHidden) break;
|
if (isHidden) break;
|
||||||
@@ -1123,13 +1118,8 @@ public class StandardItem implements Serializable, Cloneable {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case StandardType.GROUP :
|
case StandardType.GROUP :
|
||||||
// skip variable group
|
// skip inactive/conditional group (size==0 means not activated)
|
||||||
if( getSize() == 0
|
if( getSize() == 0 ) {
|
||||||
//카카오뱅크 => 카카오카드 400응답시 아래 로직을 추가해야 전체건수에서 메시지부가 처리됨
|
|
||||||
//메시지부 size 0 refPath refValue 사용 해서 있고 없고 처리
|
|
||||||
&& (StringUtils.isBlank(getRefPath())
|
|
||||||
|| StringUtils.isBlank(getRefValue()))
|
|
||||||
) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (isHidden) break;
|
if (isHidden) break;
|
||||||
|
|||||||
Reference in New Issue
Block a user