Fossil SCM

chat: a proactive fix for a potential null deref. Documented a not-immediately-obvious element.

stephan 2020-12-22 12:09 chatroom-dev
Commit cdb8f6902f94aa811aaf75b3125e12d9606ee4db7b8ad41488aa320dd6f1cb93
1 file changed +9 -2
+9 -2
--- tools/chat.tcl
+++ tools/chat.tcl
@@ -49,11 +49,13 @@
4949
<input type="file" name="file">
5050
</div>
5151
</div>
5252
</form>
5353
<hr>
54
- <span id='message-inject-point'></span>
54
+ <span id='message-inject-point'><!--
55
+ new chat messages get inserted immediately after this element
56
+ --></span>
5557
5658
</div><!-- .fossil-doc -->
5759
<hr>
5860
<p>
5961
<a href="chat/env">CGI environment</a> |
@@ -239,15 +241,20 @@
239241
span.appendChild(e);
240242
});
241243
//console.debug("span =",span.innerHTML);
242244
return span;
243245
}/*end messageToDOM()*/;
246
+ /* Injects element e as a new row in the chat, at the top of the list */
244247
const injectMessage = function f(e){
245248
if(!f.injectPoint){
246249
f.injectPoint = document.querySelector('#message-inject-point');
247250
}
248
- f.injectPoint.parentNode.insertBefore(e, f.injectPoint.nextSibling);
251
+ if(f.injectPoint.nextSibling){
252
+ f.injectPoint.parentNode.insertBefore(e, f.injectPoint.nextSibling);
253
+ }else{
254
+ f.injectPoint.parentNode.appendChild(e);
255
+ }
249256
};
250257
function newcontent(jx){
251258
var i;
252259
for(i=0; i<jx.msgs.length; ++i){
253260
let m = jx.msgs[i];
254261
--- tools/chat.tcl
+++ tools/chat.tcl
@@ -49,11 +49,13 @@
49 <input type="file" name="file">
50 </div>
51 </div>
52 </form>
53 <hr>
54 <span id='message-inject-point'></span>
 
 
55
56 </div><!-- .fossil-doc -->
57 <hr>
58 <p>
59 <a href="chat/env">CGI environment</a> |
@@ -239,15 +241,20 @@
239 span.appendChild(e);
240 });
241 //console.debug("span =",span.innerHTML);
242 return span;
243 }/*end messageToDOM()*/;
 
244 const injectMessage = function f(e){
245 if(!f.injectPoint){
246 f.injectPoint = document.querySelector('#message-inject-point');
247 }
248 f.injectPoint.parentNode.insertBefore(e, f.injectPoint.nextSibling);
 
 
 
 
249 };
250 function newcontent(jx){
251 var i;
252 for(i=0; i<jx.msgs.length; ++i){
253 let m = jx.msgs[i];
254
--- tools/chat.tcl
+++ tools/chat.tcl
@@ -49,11 +49,13 @@
49 <input type="file" name="file">
50 </div>
51 </div>
52 </form>
53 <hr>
54 <span id='message-inject-point'><!--
55 new chat messages get inserted immediately after this element
56 --></span>
57
58 </div><!-- .fossil-doc -->
59 <hr>
60 <p>
61 <a href="chat/env">CGI environment</a> |
@@ -239,15 +241,20 @@
241 span.appendChild(e);
242 });
243 //console.debug("span =",span.innerHTML);
244 return span;
245 }/*end messageToDOM()*/;
246 /* Injects element e as a new row in the chat, at the top of the list */
247 const injectMessage = function f(e){
248 if(!f.injectPoint){
249 f.injectPoint = document.querySelector('#message-inject-point');
250 }
251 if(f.injectPoint.nextSibling){
252 f.injectPoint.parentNode.insertBefore(e, f.injectPoint.nextSibling);
253 }else{
254 f.injectPoint.parentNode.appendChild(e);
255 }
256 };
257 function newcontent(jx){
258 var i;
259 for(i=0; i<jx.msgs.length; ++i){
260 let m = jx.msgs[i];
261

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button