diff --git a/release-notes/VERSION b/release-notes/VERSION index 84a562ea..31439a69 100644 --- a/release-notes/VERSION +++ b/release-notes/VERSION @@ -4,10 +4,14 @@ Project: woodstox === Releases === ------------------------------------------------------------------------ +6.0.0 (not yet released) + +#78: Shade MSV dependency + 5.3.0 (not yet released) +#58: Reading comment comments after Root Element closed sometimes throws `NullPointerException` #61: Add support for `XMLConstants.FEATURE_SECURE_PROCESSING` via SAX/Stax factories -#78: Shade MSV dependency 5.2.1 (14-May-2019) diff --git a/src/main/java/com/ctc/wstx/sr/BasicStreamReader.java b/src/main/java/com/ctc/wstx/sr/BasicStreamReader.java index 2ddc4149..844814fb 100644 --- a/src/main/java/com/ctc/wstx/sr/BasicStreamReader.java +++ b/src/main/java/com/ctc/wstx/sr/BasicStreamReader.java @@ -2962,7 +2962,7 @@ && readCDataSecondary(mCfgLazyParsing } /** - * Method called when advacing stream past the end tag that closes + * Method called when advancing stream past the end tag that closes * the root element of the open document. * Document can be either the singular one, in regular mode, or one of * possibly multiple, in multi-doc mode: this method is never called @@ -2987,10 +2987,8 @@ private int closeContentTree() if (mSymbols.isDirty()) { mOwner.updateSymbolTable(mSymbols); } - /* May be able to recycle, but not certain; and - * definitely can not just clean contents (may - * contain space(s) read) - */ + // May be able to recycle, but not certain; and definitely can not just + // clean contents (may contain space(s) read) mTextBuffer.recycle(false); return mCurrToken; } @@ -3886,9 +3884,8 @@ private void readComment() // Ok; need to get '->', can not get '--' if ((ptr + 1) >= inputLen) { - /* Can't check next 2, let's push '-' back, for rest of - * code to take care of - */ + // Can't check next 2, let's push '-' back, for rest of + // code to take care of --ptr; break; } @@ -3907,7 +3904,6 @@ private void readComment() return; } } - mInputPtr = ptr; mTextBuffer.resetWithCopy(inputBuf, start, ptr-start); readComment2(mTextBuffer); diff --git a/src/main/java/com/ctc/wstx/util/TextBuffer.java b/src/main/java/com/ctc/wstx/util/TextBuffer.java index 5f855a57..e7f008ea 100644 --- a/src/main/java/com/ctc/wstx/util/TextBuffer.java +++ b/src/main/java/com/ctc/wstx/util/TextBuffer.java @@ -183,15 +183,12 @@ public void recycle(boolean force) { if (mConfig != null && mCurrentSegment != null) { if (force) { - /* If we are allowed to wipe out all existing data, it's - * quite easy; we'll just wipe out contents, and return - * biggest buffer: - */ + // If we are allowed to wipe out all existing data, it's quite easy; + // we'll just wipe out contents, and return biggest buffer: resetWithEmpty(); } else { - /* But if there's non-shared data (ie. buffer is still - * in use), can't return it yet: - */ + // But if there's non-shared data (i.e. buffer is still in use), + // can't return it yet: if (mInputStart < 0 && (mSegmentSize + mCurrentSize) > 0) { return; } @@ -202,7 +199,6 @@ public void recycle(boolean force) mSegmentSize = 0; } } - char[] buf = mCurrentSegment; mCurrentSegment = null; mConfig.freeMediumCBuffer(buf); @@ -282,12 +278,15 @@ public void resetWithCopy(char[] buf, int start, int len) // And then reset internal input buffers, if necessary: if (mHasSegments) { clearSegments(); - } else { - if (mCurrentSegment == null) { - mCurrentSegment = allocBuffer(len); - } - mCurrentSize = mSegmentSize = 0; } + + // 14-Jul-2019, tatu: As per [woodstox-core#58] there are cases + // in which current segment has been recycled and needs to be restored + if (mCurrentSegment == null) { + mCurrentSegment = allocBuffer(len); + } + mCurrentSize = mSegmentSize = 0; + append(buf, start, len); } diff --git a/src/test/java/org/codehaus/stax/test/stream/TestCommentRead.java b/src/test/java/org/codehaus/stax/test/stream/TestCommentRead.java index ac38e8cb..7cb8cb6c 100644 --- a/src/test/java/org/codehaus/stax/test/stream/TestCommentRead.java +++ b/src/test/java/org/codehaus/stax/test/stream/TestCommentRead.java @@ -1,5 +1,7 @@ package org.codehaus.stax.test.stream; +import java.io.InputStream; + import javax.xml.stream.*; /** @@ -23,6 +25,24 @@ public void testValidComments() streamThrough(getReader(XML, false)); } + // for [woodstox-58]: comment read outside main XML Ntree, after long (enough) CHARACTERS + // (probably also affect PIs) + public void testIssue58CommentRead() throws Exception + { + XMLInputFactory f = getNewInputFactory(); + setCoalescing(f, true); + InputStream in = getClass().getResource("issue58.xml").openStream(); + XMLStreamReader r = f.createXMLStreamReader(in); + + // starts with couple of comments: + assertTokenType(COMMENT, r.next()); + r.getText(); + // but should be enough to stream and access contents + streamThrough(r); + + in.close(); + } + /** * Method that checks properties of COMMENT * returned by the stream reader are correct according to StAX specs. diff --git a/src/test/resources/org/codehaus/stax/test/stream/issue58.xml b/src/test/resources/org/codehaus/stax/test/stream/issue58.xml new file mode 100644 index 00000000..6d3fb3ea --- /dev/null +++ b/src/test/resources/org/codehaus/stax/test/stream/issue58.xml @@ -0,0 +1,188 @@ + + + + + + + + + 430016 + + + 2018-01-01 + 2018-07-20 + + + 挂牌公司公司治理制度 + 2018-033 + 2018-07-20 + NG0405 + 2018-07-20 + 430016 + 430016 + ST胜龙 + 东海证券 + false + 北京胜龙科技股份有限公司 + 信息披露管理制度 + 2018-07-18 + + + false + 第一章 总 则 + +第一条 为规范公司信息披露工作,维护公司形象和股东权益,根据全国中小企业股份转让系统有限责任公司(以下简称“全国股份转让系统公司”)发布的《全国中小企业股份转让系统挂牌公司信息披露细则》和《公司章程》等规定,制定本制度。 + +第二条 本制度所指信息披露是指公司在全国股份转让系统有限责任公司指定的报刊和网站披露的定期报告和临时报告。 + +第三条 公司信息披露义务人为公司控股股东及其一致行动人、董事、监事、高级管理人员等。信息披露义务人应当真实、准确、完整、及时地披露信息,不得有虚假记载、误导性陈述或者重大遗漏。信息披露义务人应当同时向所有投资者公开披露信息。 + +第四条 公司的董事、监事、高级管理人员应当忠实、勤勉地履行职责,保证披露信息的真实、准确、完整。 + +第二章 披露信息内容、范围和标准 + +第一节 定期报告 + +第五条 公司应当披露的定期报告包括年度报告、半年度报告,年度报告中的财务会计报告应当经“取得从事证券、期货相关业务资格”的会计师事务所审计。 + +第六条 公司应当在每个会计年度结束之日起 4 个月内编制并披露年度报告,在每个会计年度的上半年结束之日起 2 个月内披露半年度报告。 + +第七条 年度报告应当记载以下内容(半年度报告内容参照年度报告): +(一)重要提示、目录和释义; +(二)公司简介; +(三)会计数据和财务指标摘要; +(四)管理层讨论与分析; +(五)重要事项; +(六)股本变动及股东情况; +(七)董事、监事、高级管理人员及核心员工情况; +(八)公司治理及内部控制; +(九)财务报告; +(十)全国股份转让系统公司规定的其他事项。 + +第八条 公司董事、高级管理人员应当对定期报告签署书面确认意见,监事会应当提出书面审核意见,说明董事会的编制和审核程序是否符合法律、行政法规和全国股份转让系统公司的规定,报告的内容是否能够真实、准确、完整地反映公司的实际情况。 + 董事、监事、高级管理人员对定期报告内容的真实性、准确性、完整性无法保证或者存在异议的,应当陈述理由和发表意见,并予以披露。 + +第九条 定期报告中财务会计报告被出具非标准审计报告的,公司董事会和监事会应当针对该审计意见涉及事项作出专项说明。 + +第二节临时报告 + +第十条 发生可能对本公司证券及其衍生品种交易价格产生较大影响的重大事件,投资者尚未得知时,公司应当立即披露,说明事件的起因、目前的状态和可能产生的影响。 +重大事件包括且不限于以下事项: +(一)挂牌公司控股股东、实际控制人及其一致行动人发生变更; +(二)挂牌公司控股股东、实际控制人或者其关联方占用资金; +(三)法院裁定禁止有控制权的大股东转让其所持挂牌公司股份; +(四)任一股东所持挂牌公司5%以上的股份被质押、冻结、司法拍卖、托管、设定信托或者被依法限制表决权; +(五)挂牌公司董事、监事、高级管理人员发生变动,董事长或者总经理无法履行职责[已按股转新信批制度修改]; +(六)挂牌公司减资、合并、分立、解散及申请破产的决定,或者依法进入破产程序、被责令关闭; +(七)挂牌公司董事会就收购与出售重大资产、对外重大投资(含委托理财、对子公司投资等)事项的方案、协议签订作出决议; +(八)挂牌公司董事会就股票拟在证券交易所上市、或者发行其他证券品种作出决议; +(九)挂牌公司董事会就回购股份、股权激励方案作出决议; +(十)挂牌公司变更会计政策、会计估计(因法律、行政法规、部门规章修订造成的除外),变更会计师事务所; +(十一)挂牌公司董事会就对外提供借款(对控股子公司借款除外)、对外提供担保(对控股子公司担保除外)事项作出决议; +(十二)挂牌公司涉及重大诉讼、仲裁事项,股东大会、董事会决议被依法撤销或者宣告无效; +(十三)挂牌公司或其控股股东、实际控制人、董事、监事、高级管理人员被纳入失信联合惩戒对象; +(十四)挂牌公司取得或丧失重要生产资质、许可、特许经营权,或生产经营的外部条件、行业政策发生重大变化; +(十五)挂牌公司涉嫌违法违规被中国证监会及其派出机构或其他有权机关立案调查,被移送司法机关或追究刑事责任,受到对公司生产经营有重大影响的行政处罚,被中国证监会及其派出机构采取行政监管措施;公司董事、监事、高级管理人员涉嫌违法违规被中国证监会及其派出机构或其他有权机关立案调查或者采取强制措施,被中国证监会及其派出机构处以证券市场禁入、认定为不适当人员,受到对公司生产经营有重大影响的行政处罚; +(十六)因前期已披露的信息存在差错、未按规定披露或者虚假记载,被有关机构责令改正或者经董事会决定进行更正; +(十七)法律、行政法规规定的,或者中国证监会、全国股转公司、主办券商认定的其他情形。 + +第十一条 公司应当在临时报告所涉及的重大事件最先触及的重大事件下列任一时点后及时履行首次披露义务: + +(一)董事会或者监事会作出决议时; +(二)签署意向书或者协议(无论是否附加条件或者期限)时; +(三)公司(含任一董事、监事或者高级管理人员)知悉或者理应知悉重大事件发生时。 + +第十二条 对公司股票转让价格可能产生较大影响的重大事件正处于筹划阶段,虽然尚未触及本细则第十三条规定的时点,但出现下列情形之一的,公司亦应履行首次披露义务: +(一)该事件难以保密; +(二)该事件已经泄漏或者市场出现有关该事件的传闻; +(三)公司股票及其衍生品种交易已发生异常波动。 + +第十三条 公司披露重大事件后,已披露的重大事件出现可能对公司证券及其衍生品种交易价格产生较大影响的进展或者变化的,应当及时披露进展或者变化情况、可能产生的影响。 + +第十四条 公司和参股公司发生本办法第十条规定的重大事件,可能对公司证券及其衍生品种交易价格产生较大影响的,公司应当履行信息披露义务。 + +第十五条 涉及公司的收购、合并、分立、发行股份、回购股份等行为导致公司股本总额、股东、实际控制人等发生重大变化的,信息披露义务人应当依法履行报告、公告义务,披露权益变动情况。 + +第十六条 公司应当关注本公司证券及其衍生品种的异常交易情况及媒体关于本公司的报道。证券及其衍生品种发生异常交易或者在媒体中出现的消息可能对公司证券及其衍生品种的交易产生重大影响时,公司应当及时向相关各方了解真实情况,必要时应当以书面方式问询。 + +第十七条 公司证券及其衍生品种交易被全国股份转让系统公司认定为异常交易的,公司应当及时了解造成证券及其衍生品种交易异常波动的影响因素,并及时披露。 + +第三章 信息的传递、审核、披露流程 + +第十八条 公司董事会秘书或公司指定人员为公司信息披露事务负责人(以下简称为信披负责人),负责办理公司信息对外公布等相关事宜。除监事会公告外,公司披露的信息应当以董事会公告的形式发布。董事、监事、高级管理人员非经董事会书面授权,不得对外发布公司未披露信息。 + +第十九条 信息披露应遵循下列程序: +(一)公司各职能部门在获悉相关信息或筹备此类工作的同时,应报给信披负责人,重大事件应即时报告; +(二)信披负责人进行合规性审核; +(三)定期报告在董事会做出决议的2个转让日内,由信息披露负责人签署后,报主办券商审核,在指定报刊、网站披露。 +临时报告需要由董事会做出决议的,同定期报告披露流程;不需要董事会做出决议的披露事项,信息披露负责人要及时报告董事及相关人员后披露相关信息; +(四)公司通过业绩说明会、分析师会议、路演、接受投资者调研等形式就公司的经营情况、财务状况及其他事件与任何机构和个人进行沟通的,不得提供内幕信息; +(五)对媒体已报道的信息,信息披露负责人应主动求证报道的真实情况。 + +第二十条 定期报告的编制、审议、披露程序: +(一)信息披露负责人负责组织定期报告的披露工作,公司各部门及时、准确、完整地提供相关资料,并经相应责任人和部门领导审核签字后,报送信披负责人; +(二)信披负责人收到相关材料、数据后,认真对相关材料、数据进行复核和编制,编制完成后,提请董事会审议; +(三)董事、高级管理人员签署书面确认意见; +(四)监事会审核董事会编制的定期报告并发表书面审核意见。 + +第二十一条 重大事件的报告、传递、审核、披露程序: +(一)董事、监事、高级管理人员知悉重大事件发生时,应当按照公司规定立即履行报告义务; +(二)董事长在接到报告后,应当立即向董事会报告,并敦促信息披露负责人组织临时报告的披露工作。 + +第二十二条 公司履行首次披露义务时,应当按照全国股份转让系统公司制定的临时公告格式指引予以披露。 +在编制公告时若相关事实尚未发生的,公司应当客观公告既有事实,待相关事实发生后,应当按照相关格式指引的要求披露事项进展或变化情况。 + +第四章 信息披露管理部门及其职责 + +第二十三条 公司信披负责人为公司信息披露归口管理部门,在董事会领导下开展工作。 + +第二十四条 董事的责任: +(一)公司董事会全体成员必须保证信息披露内容真实、准确、完整,没有虚假记载、误导性陈述或重大遗漏,并就信息披露内容的真实性、准确性和完整性承担个别及连带责任。 +(二)董事应当了解并持续关注公司生产经营情况、财务状况和公司已经发生的或者可能发生的重大事件及其影响,主动调查、获取决策所需要的资料。 +(三)未经董事会决议或董事长授权,董事个人不得代表公司或董事会向股东和媒体发布、披露公司未经公开披露过的信息。 + +第二十五条 监事的责任: +(一)监事会需要通过媒体对外披露信息时,须将拟披露的监事会决议及说明披露事项的相关附件,交由信息披露负责人办理具体的披露事务。 +(二)监事会全体成员必须保证所提供披露的文件材料的内容真实、准确、完整,没有虚假记载、误导性陈述或重大遗漏,并对信息披露内容的真实性、准确性和完整性承担个别及连带责任。 +(三)监事会以及监事个人不得代表公司向股东和媒体发布和披露非监事会职权范围内公司未经公开披露的信息。 +(四)监事会对涉及检查公司的财务,对董事、总经理和其他高级管理人员执行公司职务时违反法律、法规或者章程的行为进行对外披露时,应提前15天以书面文件形式通知董事会。 +(五)当监事会向股东大会或国家有关主管机关报告董事、总经理和其他高级管理人员损害公司利益的行为时,应及时通知董事会,并提供相关资料。 + +第二十六条 高级管理人员的责任: +(一)高级管理人员应当及时以书面形式,定期或不定期在有关事项发生的当日内向董事会报告公司经营情况、对外投资、重大合同的签订、执行情况、资金运用情况和盈亏情况,总经理必须保证这些报告的真实、及时和完整,并在该书面报告签名,承担相应责任。 +(二)经理班子应责成有关部门对照信息披露的范围和内容,如有发生,部门负责人将有关事项在发生的当日内报告总经理。 +(三)总经理应当以书面形式定期或不定期在有关事项发生的当日内向公司董事长报告公司经营、管理、对外投资、重大合同的签订、执行情况、资金运用情况和盈亏情况,并保证该报告的真实、及时、准确和完整,承担相应责任,并在该书面报告签名。总经理对所提供的信息在未公开披露前负有保密责任。 +各信息披露的义务人应在有关事项发生的当日将相关信息提交信息披露负责人。 +信息披露负责人需要进一步的材料时,相关部门应当按照信息披露负责人要求的内容与时限提交。 +(四)经理班子有责任和义务答复董事会关于涉及公司定期报告、临时报告及公司其他情况的询问,以及董事会代表股东、监管机构作出的质询,提供有关资料,并承担相应责任。 +(五)经理班子提交董事会的报告和材料应履行相应的手续,并由双方就交接的报告及材料情况和交接日期、时间等内容签字认可。 + +第二十七条 信息披露负责人的责任: +(一)信息披露负责人为公司与中国证监会和全国股份转让系统公司的指定联络人,负责准备和递交中国证监会和全国股份转让系统公司要求的文件,组织完成证券监管机构布置的任务。 +(二)负责公司信息的保密工作,制订保密措施。内幕信息泄露时,及时采取补救措施加以解释和澄清,并报告中国证监会和全国股份转让系统公司。 +(三)信息披露负责人负责组织和协调公司信息披露事务,汇集公司应予披露的信息并报告董事会,持续关注媒体对公司的报道并主动求证报道的真实情况。信息披露事务包括建立信息披露的制度、负责投资者关系、接待来访、回答咨询、联系股东、董事,向投资者提供公司公开披露过的资料,保证公司信息披露的及时性、合法性、真实性和完整性。 +(四)信息披露负责人有权参加股东大会、董事会会议、监事会会议和高级管理人员相关会议,有权了解公司的财务和经营情况,查阅涉及信息披露事宜的所有文件。 +(五)股东咨询电话是公司联系股东和证券监管机构的专用电话。除授权的人员外,任何人不得随意回答股东的咨询,否则将承担相关责任。 + +第五章 未公开信息的保密措施 + +第二十八条 公司董事、监事、信息披露负责人、其他高级管理人员以及其他因工作关系接触到公司应披露信息的相关工作人员,在信息未正式公开披露前负有保密义务。 + +第二十九条 在公司信息未正式披露前,公司各部门对拟披露信息均负有保密义务。不得在公司内外网站、报纸、广播等媒介公开相关信息,不得向无关第三方泄漏。 + +第三十条 公司董事会应采取必要的措施,在信息公开披露前,将信息知情者控制在最小范围内。凡公司应披露信息中涉及公司商业秘密或其他重要不便于公开的信息等,信披负责人应及时向董事会反映后,向全国股份转让系统公司申请豁免相关信息披露义务。 + +第三十一条 当董事会得知尚未披露的信息难以保密或已经泄露,或者公司股票价格已经明显发生异常波动时,公司应当立即将该信息予以披露。 + +第六章 违反本制度的处理 + +第三十二条 公司董事、监事、高级管理人员依法负有诚信和勤勉尽责的义务和责任,若有违反本制度之规定,由全国股份转让系统公司按规章处理。 + +第三十三条 公司各职能部门未按要求及时、准确、完整的提供信息,由信披负责人提出处理意见,报董事会批准执行。 + +第七章 附 则 + +第三十四条 本制度由公司董事会制定、修改,并由董事会负责解释。 + +第三十五条 本制度经董事会审议通过之日起生效并施行。 + \ No newline at end of file