Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Interpolated var access is sometimes -1

Aperta
#15 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
csharp
Ambito
game-dev

Direzione di ricerca

Start in InterpolatedVar.cs, reading WrapRange and the indexer that adds firstElement before wrapping. Trace how an index that passes IsIdxValid can become -1, and identify the caller or input that triggers it. Done means the cause is understood and corrected so valid accesses do not rely on modulo to mask the invalid index.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Bug Help Wanted

In InterpolatedVar.cs, changed by 1348c82ed9ef4d6112115fe5614e8cd01c140a1c:

private int WrapRange(int i) {
	return MathLib.Modulo(i, maxElement); // TODO: Why does -1 get passed here sometimes. We shouldn't have to change this to accomodate.
}

This should actually be

return (i >= maxElement) ? (i - maxElement) : i;

But for some reason, i coming in can sometimes be -1 when coming from here:

	public ref T this[int i] {
		get {
			Assert(IsIdxValid(i));
			i += firstElement;
			i = WrapRange(i);
			return ref elements![i];
		}
	}

There is a check for this (IsIdxValid), but it's just an assert. This must be some bug in my implementation I would imagine, but further research is needed. For now, the modulo works with an occasional hiccup.

Lingua principale
C#
Stelle
104
Fork
9
Merge medio
8h 52m
PR unite (30g)
115

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di SourceDotNET/Source.NET

Tutte le issue di SourceDotNET/Source.NET

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.