Răsfoiți Sursa

misc: bsize: add bsize_mul()

ambrop7 13 ani în urmă
părinte
comite
5ef2fc9f99
1 a modificat fișierele cu 15 adăugiri și 0 ștergeri
  1. 15 0
      misc/bsize.h

+ 15 - 0
misc/bsize.h

@@ -50,6 +50,7 @@ static int bsize_tosize (bsize_t s, size_t *out);
 static int bsize_toint (bsize_t s, int *out);
 static bsize_t bsize_add (bsize_t s1, bsize_t s2);
 static bsize_t bsize_max (bsize_t s1, bsize_t s2);
+static bsize_t bsize_mul (bsize_t s1, bsize_t s2);
 
 bsize_t bsize_fromsize (size_t v)
 {
@@ -139,4 +140,18 @@ bsize_t bsize_max (bsize_t s1, bsize_t s2)
     return s;
 }
 
+bsize_t bsize_mul (bsize_t s1, bsize_t s2)
+{
+    bsize_t s;
+    
+    if (s1.is_overflow || s2.is_overflow || s2.value > SIZE_MAX / s1.value) {
+        s.is_overflow = 1;
+    } else {
+        s.is_overflow = 0;
+        s.value = s1.value * s2.value;
+    }
+    
+    return s;
+}
+
 #endif