Calculations fixes.

This commit is contained in:
2025-12-12 01:29:46 +00:00
parent 03d1ef430a
commit c34f82e548
12 changed files with 402 additions and 163 deletions
+13 -5
View File
@@ -165,20 +165,28 @@ func NewMemoryCache(ttl time.Duration) *MemoryCache {
// Get retrieves a value from the cache
func (c *MemoryCache) Get(key string) (interface{}, bool) {
c.mu.RLock()
defer c.mu.RUnlock()
entry, ok := c.data[key]
if !ok {
c.mu.RUnlock()
return nil, false
}
// Check expiration
// Check expiration - if expired, upgrade to write lock to delete
if time.Now().After(entry.ExpiresAt) {
delete(c.data, key)
c.mu.RUnlock()
// Upgrade to write lock for deletion
c.mu.Lock()
// Re-check in case another goroutine already deleted it
if entry, ok := c.data[key]; ok && time.Now().After(entry.ExpiresAt) {
delete(c.data, key)
}
c.mu.Unlock()
return nil, false
}
return entry.Value, true
value := entry.Value
c.mu.RUnlock()
return value, true
}
// Set stores a value in the cache
+9 -3
View File
@@ -39,9 +39,15 @@ func newProgressBar(label string, total int) *progressBar {
func (p *progressBar) update(fetched int) {
p.current = fetched
percent := float64(p.current) / float64(p.total)
if percent > 1.0 {
percent = 1.0
// Guard against division by zero
var percent float64
if p.total > 0 {
percent = float64(p.current) / float64(p.total)
if percent > 1.0 {
percent = 1.0
}
} else {
percent = 0.0
}
labelStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("205"))