Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Seeking SamplesBuffer to position 0 panics

オープン 初心者向け
#923 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
74/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
rust

調査の方向性

パニックは src/buffer.rs の116行目付近、SamplesBuffer のシーク処理内で発生しています。目標位置が0のとき new_pos - curr_channel がアンダーフローします。まず try_seek が new_pos と curr_channel をどのように計算しているかを読み、その後 issue のスニペットで再現してください。Duration::from_secs(0) へのシークがパニックせず、正しいチャンネルの最初のサンプルに移動し、そのケースをカバーするテストがあれば完了です。

索引モデルが issue の本文から書いたものです。

説明

bug

When seeking rodio::buffer::SamplesBuffer to Duration::from_secs(0), a panic occurs:

use rodio::nz;
use rodio::buffer::SamplesBuffer;
use std::time::Duration;
let mut buffer = SamplesBuffer::new(nz!(2), nz!(44100), vec![0.0, 0.0, 0.0, 0.0, 0.0, 0.0]);
buffer.next();
buffer.try_seek(Duration::from_secs(0));

Error message:

[windows] thread 'main' (23364) panicked at C:\Users\User\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rodio-0.22.2\src\buffer.rs:116:23:
[windows] attempt to subtract with overflow

The line where it happens:

// make sure the next sample is for the right channel
let new_pos = new_pos.next_multiple_of(self.channels().get() as usize);
let new_pos = new_pos - curr_channel;

It looks like curr_channel is being subtracted from new_pos, which in this case is equal to 0, causing an underflow.

主要言語
Rust
スター
2.5k
フォーク
338
平均マージ
1日 3時間
マージ済み PR(30日)
1

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

RustAudio/rodio のほかの issue

RustAudio/rodio の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。